diff --git a/sflphone-client-gnome/configure.ac b/sflphone-client-gnome/configure.ac
index da02c0746e6848813f990e64482d525174ec0a60..6b513f95b95b008f2ad60be6c6d132f0c15b5a2c 100644
--- a/sflphone-client-gnome/configure.ac
+++ b/sflphone-client-gnome/configure.ac
@@ -53,6 +53,7 @@ AC_SUBST(LIBSEXY_LIBS)
 PKG_CHECK_MODULES(DBUSGLIB, dbus-glib-1 >= 0.75, HAVE_DBUS_G_PROXY_SET_DEFAULT_TIMEOUT=true, HAVE_DBUS_G_PROXY_SET_DEFAULT_TIMEOUT=false);
 PKG_CHECK_MODULES([LIBNOTIFY], [libnotify >= 0.7.2], [AC_DEFINE([LIBNOTIFY_VERSION_0_7_2],[],[Using libnotify-0.7.2 or higher])],[PKG_CHECK_MODULES([LIBNOTIFY], [libnotify >= 0.4])])
 PKG_CHECK_MODULES(CLUTTER, clutter-1.0)
+PKG_CHECK_MODULES(CLUTTERGTK, clutter-gtk-0.10)
 PKG_CHECK_MODULES(SFLGTK, gtk+-2.0 > 2.2)
 PKG_CHECK_MODULES(SFLGLIB, glib-2.0 >= 2.2)
 PKG_CHECK_MODULES(WEBKIT, webkit-1.0)
diff --git a/sflphone-client-gnome/src/config/videoconf.c b/sflphone-client-gnome/src/config/videoconf.c
index f85977ad95d5612e0bf4af9b7328a8782687d145..365fe7d25ca9a54850caaf2a8fca787aa9b99cbb 100644
--- a/sflphone-client-gnome/src/config/videoconf.c
+++ b/sflphone-client-gnome/src/config/videoconf.c
@@ -38,6 +38,7 @@
 #include <assert.h>
 
 #include <clutter/clutter.h>
+#include <clutter-gtk/clutter-gtk.h>
 
 static GtkWidget *v4l2Device;
 static GtkWidget *v4l2Channel;
@@ -114,6 +115,7 @@ static VideoPreview *preview = NULL;
 static GtkWidget *preview_button = NULL;
 
 static GtkWidget *drawarea = NULL;
+static int using_clutter;
 static int drawWidth  = 20 * 16;
 static int drawHeight = 20 * 9;
 static const char *drawFormat;
@@ -153,11 +155,7 @@ preview_button_clicked(GtkButton *button, gpointer data UNUSED)
 
         static const char *formats[2] = { "rgb24", "bgra" };
 
-        if (clutter_init(NULL, NULL) == CLUTTER_INIT_SUCCESS) {
-            drawFormat = formats[0];
-        } else {
-            drawFormat = formats[1];
-        }
+        drawFormat = using_clutter ? formats[0] : formats[1];
         dbus_start_video_preview(drawWidth, drawHeight, drawFormat);
     }
     else {
@@ -190,7 +188,8 @@ GtkWidget* create_video_configuration()
     g_signal_connect(G_OBJECT(preview_button), "clicked", G_CALLBACK(preview_button_clicked), NULL);
     gtk_widget_show(GTK_WIDGET(preview_button));
 
-    drawarea = gtk_drawing_area_new();
+    using_clutter = clutter_init(NULL, NULL) == CLUTTER_INIT_SUCCESS;
+    drawarea = using_clutter ? gtk_clutter_embed_new() : gtk_drawing_area_new();
     gtk_widget_set_size_request (drawarea, drawWidth, drawHeight);
     gtk_table_attach(GTK_TABLE(table), drawarea, 1, 2, 0, 1, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 6);
     gtk_widget_show(GTK_WIDGET(drawarea));
diff --git a/sflphone-client-gnome/src/video/Makefile.am b/sflphone-client-gnome/src/video/Makefile.am
index 6da73dce5c36128d9fdc0744ee0ee234f6077f5a..7a66cf0c3380a253279c44a562769e076c4cc893 100644
--- a/sflphone-client-gnome/src/video/Makefile.am
+++ b/sflphone-client-gnome/src/video/Makefile.am
@@ -4,10 +4,10 @@ noinst_LTLIBRARIES = libvideo.la
 
 libvideo_la_SOURCES = video_preview.c
 
-libvideo_la_LDFLAGS = @CLUTTER_LDFLAGS@
+libvideo_la_LDFLAGS = @CLUTTER_LDFLAGS@ @CLUTTERGTK_LDFLAGS@
 
 libvideo_la_LIBADD = @CLUTTER_LIBS@ \
-			@SFLGTK_LIBS@ @SFLGLIB_LIBS@ 
+			@SFLGTK_LIBS@ @SFLGLIB_LIBS@  @CLUTTERGTK_LIBS@
 					  
 libvideo_la_CFLAGS = @CLUTTER_CFLAGS@ \
-			@SFLGTK_CFLAGS@ @SFLGLIB_CFLAGS@
+			@SFLGTK_CFLAGS@ @SFLGLIB_CFLAGS@ @CLUTTERGTK_CFLAGS@
diff --git a/sflphone-client-gnome/src/video/video_preview.c b/sflphone-client-gnome/src/video/video_preview.c
index a535b961c14596f383d40707f7293f0b4506fdae..73c9618762c6b607d195f946c9ca797017bb8e02 100644
--- a/sflphone-client-gnome/src/video/video_preview.c
+++ b/sflphone-client-gnome/src/video/video_preview.c
@@ -42,6 +42,7 @@
 #include <string.h>
 
 #include <clutter/clutter.h>
+#include <clutter-gtk/clutter-gtk.h>
 #include <cairo.h>
 
 #define VIDEO_PREVIEW_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), \
@@ -372,9 +373,10 @@ readFrameFromShm(VideoPreviewPrivate *priv)
     }
 
     if (priv->using_clutter) {
-      if (strcmp(priv->format, "rgb24")) {
-          g_print("clutter render: Unknown pixel format `%s'\n", priv->format);
-      }
+        if (strcmp(priv->format, "rgb24")) {
+            g_print("clutter render: Unknown pixel format `%s'\n", priv->format);
+            return;
+        }
 
         clutter_texture_set_from_rgb_data (CLUTTER_TEXTURE(texture),
                 (void*)data,
@@ -386,14 +388,12 @@ readFrameFromShm(VideoPreviewPrivate *priv)
                 0,
                 NULL);
     } else {
-        cairo_format_t format;
-        if (!strcmp(priv->format, "bgra"))
-            format = CAIRO_FORMAT_RGB24;
-        else {
-            g_print("cairo render: Unknown pixel format `%s'\n", priv->format);
+        if (strcmp(priv->format, "bgra")) {
+            g_print("cairo render: Unknown pixel format `%s'\n", priv->format); 
             return;
         }
 
+        cairo_format_t format = CAIRO_FORMAT_RGB24;
         int stride = cairo_format_stride_for_width (format, width);
         assert(stride == align(4*width));
 
@@ -487,29 +487,25 @@ video_preview_run(VideoPreview *preview)
     priv->using_clutter = !strcmp(priv->format, "rgb24");
     g_print("Preview: using %s render\n", priv->using_clutter ? "clutter" : "cairo");
 
+    g_signal_connect(priv->drawarea, "unrealize", G_CALLBACK(on_drawarea_unrealize), preview);
+
     if (priv->using_clutter) {
         ClutterActor *stage;
 
-        /* Get a stage */
-        stage = clutter_stage_new ();
+        stage = gtk_clutter_embed_get_stage (GTK_CLUTTER_EMBED(priv->drawarea));
+        assert(stage);
         g_signal_connect (stage, "delete-event", G_CALLBACK(on_stage_delete),
                 preview);
-        clutter_actor_set_size(stage,
-                priv->width,
-                priv->height);
+        //clutter_actor_set_size(stage, priv->width, priv->height);
 
         priv->texture = clutter_texture_new();
 
-        clutter_stage_set_title(CLUTTER_STAGE (stage), "Video Test");
         /* Add ClutterTexture to the stage */
         clutter_container_add(CLUTTER_CONTAINER (stage), priv->texture, NULL);
 
         clutter_actor_show_all(stage);
     } else {
-        GtkWidget *drawarea = priv->drawarea;
-        g_signal_connect(drawarea, "unrealize", G_CALLBACK(on_drawarea_unrealize), preview);
-        GdkWindow *w = gtk_widget_get_window(drawarea);
-        priv->cairo = gdk_cairo_create(w);
+        priv->cairo = gdk_cairo_create(gtk_widget_get_window(priv->drawarea));
     }
 
     /* frames are read and saved here */