diff --git a/src/compositor/mutter/compositor-mutter.c b/src/compositor/mutter/compositor-mutter.c
index b5c543b..ba39d45 100644
--- a/src/compositor/mutter/compositor-mutter.c
+++ b/src/compositor/mutter/compositor-mutter.c
@@ -577,7 +577,7 @@ mutter_window_set_property (GObject      *object,
           }
         else if (!newv && !priv->shadow && mutter_window_has_shadow (mw))
           {
-            guint        w, h;
+            gfloat       w, h;
             MetaDisplay *display = meta_screen_get_display (priv->screen);
             Mutter      *compositor;
 
diff --git a/src/compositor/mutter/mutter-shaped-texture.c b/src/compositor/mutter/mutter-shaped-texture.c
index 6acccb0..c6769f9 100755
--- a/src/compositor/mutter/mutter-shaped-texture.c
+++ b/src/compositor/mutter/mutter-shaped-texture.c
@@ -57,7 +57,7 @@ struct _MutterShapedTexturePrivate
 {
   CoglHandle mask_texture;
   CoglHandle material;
-#if 1 /* see workaround comment in mutter_shaped_texture_paint */
+#if 0 /* see workaround comment in mutter_shaped_texture_paint */
   CoglHandle material_workaround;
 #endif
 
@@ -106,7 +106,7 @@ mutter_shaped_texture_dispose (GObject *object)
       cogl_material_unref (priv->material);
       priv->material = COGL_INVALID_HANDLE;
     }
-#if 1 /* see comment in mutter_shaped_texture_paint */
+#if 0 /* see comment in mutter_shaped_texture_paint */
   if (priv->material_workaround != COGL_INVALID_HANDLE)
     {
       cogl_material_unref (priv->material_workaround);
@@ -227,7 +227,7 @@ mutter_shaped_texture_ensure_mask (MutterShapedTexture *stex)
         }
       else
         priv->mask_texture = cogl_texture_new_from_data (tex_width, tex_height,
-                                                         -1, FALSE,
+                                                         COGL_TEXTURE_NO_SLICING,
                                                          COGL_PIXEL_FORMAT_A_8,
                                                          COGL_PIXEL_FORMAT_ANY,
                                                          tex_width,
@@ -249,7 +249,7 @@ mutter_shaped_texture_paint (ClutterActor *actor)
   guint tex_width, tex_height;
   ClutterActorBox alloc;
   CoglHandle material;
-#if 1 /* please see comment below about workaround */
+#if 0 /* please see comment below about workaround */
   guint depth;
 #endif
 
@@ -280,36 +280,25 @@ mutter_shaped_texture_paint (ClutterActor *actor)
 
   if (priv->material == COGL_INVALID_HANDLE)
     {
+      GError *error = NULL;
+
       priv->material = cogl_material_new ();
 
-      /* Replace the RGB from layer 1 with the RGB from layer 0 */
-      cogl_material_set_layer_combine_function
-        (priv->material, 1,
-         COGL_MATERIAL_LAYER_COMBINE_CHANNELS_RGB,
-         COGL_MATERIAL_LAYER_COMBINE_FUNC_REPLACE);
-      cogl_material_set_layer_combine_arg_src
-        (priv->material, 1, 0,
-         COGL_MATERIAL_LAYER_COMBINE_CHANNELS_RGB,
-         COGL_MATERIAL_LAYER_COMBINE_SRC_PREVIOUS);
-
-      /* Modulate the alpha in layer 1 with the alpha from the
-         previous layer */
-      cogl_material_set_layer_combine_function
-        (priv->material, 1,
-         COGL_MATERIAL_LAYER_COMBINE_CHANNELS_ALPHA,
-         COGL_MATERIAL_LAYER_COMBINE_FUNC_MODULATE);
-      cogl_material_set_layer_combine_arg_src
-        (priv->material, 1, 0,
-         COGL_MATERIAL_LAYER_COMBINE_CHANNELS_ALPHA,
-         COGL_MATERIAL_LAYER_COMBINE_SRC_PREVIOUS);
-      cogl_material_set_layer_combine_arg_src
-        (priv->material, 1, 1,
-         COGL_MATERIAL_LAYER_COMBINE_CHANNELS_ALPHA,
-         COGL_MATERIAL_LAYER_COMBINE_SRC_TEXTURE);
+      /* Replace the RGB from layer 1 with the RGB from layer 0 and
+         modulate the alpha in layer 1 with the alpha from the
+         layer 0 */
+      if (!cogl_material_set_layer_combine (priv->material, 1,
+                                            "RGB = REPLACE (PREVIOUS)\n"
+                                            "A = MODULATE (PREVIOUS, TEXTURE)",
+                                            &error))
+        {
+          g_warning ("%s", error->message);
+          g_clear_error (&error);
+        }
     }
   material = priv->material;
 
-#if 1
+#if 0
   /* This was added as a workaround. It seems that with the intel
    * drivers when multi-texturing using an RGB TFP texture, the
    * texture is actually setup internally as an RGBA texture, where
@@ -369,8 +358,8 @@ mutter_shaped_texture_paint (ClutterActor *actor)
 
   clutter_actor_get_allocation_box (actor, &alloc);
   cogl_rectangle (0, 0,
-                  CLUTTER_UNITS_TO_FLOAT (alloc.x2 - alloc.x1),
-                  CLUTTER_UNITS_TO_FLOAT (alloc.y2 - alloc.y1));
+                  alloc.x2 - alloc.x1,
+                  alloc.y2 - alloc.y1);
 }
 
 static void
@@ -411,8 +400,8 @@ mutter_shaped_texture_pick (ClutterActor *actor,
       /* Paint the mask rectangle in the given color */
       cogl_set_source_texture (priv->mask_texture);
       cogl_rectangle_with_texture_coords (0, 0,
-                                          CLUTTER_UNITS_TO_FLOAT (alloc.x2 - alloc.x1),
-                                          CLUTTER_UNITS_TO_FLOAT (alloc.y2 - alloc.y1),
+                                          alloc.x2 - alloc.x1,
+                                          alloc.y2 - alloc.y1,
                                           0, 0, 1, 1);
     }
 }
diff --git a/src/compositor/mutter/plugins/default.c b/src/compositor/mutter/plugins/default.c
index d7f664d..173f359 100644
--- a/src/compositor/mutter/plugins/default.c
+++ b/src/compositor/mutter/plugins/default.c
@@ -338,9 +338,7 @@ switch_workspace (MutterPlugin *plugin,
 
   stage = mutter_plugin_get_stage (plugin);
 
-  mutter_plugin_query_screen_size (plugin,
-					      &screen_width,
-					      &screen_height);
+  mutter_plugin_query_screen_size (plugin, &screen_width, &screen_height);
   clutter_actor_set_anchor_point (workspace1,
                                   screen_width,
                                   screen_height);
@@ -375,8 +373,8 @@ switch_workspace (MutterPlugin *plugin,
 
       if (win_workspace == to || win_workspace == from)
         {
-          gint x, y;
-          guint w, h;
+          gfloat x, y;
+          gfloat w, h;
 
           clutter_actor_get_position (window, &x, &y);
           clutter_actor_get_size (window, &w, &h);
@@ -558,8 +556,8 @@ maximize (MutterPlugin *plugin,
       ClutterAnimation *animation;
       EffectCompleteData *data = g_new0 (EffectCompleteData, 1);
       ActorPrivate *apriv = get_actor_private (mc_window);
-      guint width, height;
-      gint  x, y;
+      gfloat width, height;
+      gfloat x, y;
 
       apriv->is_maximized = TRUE;
 
diff --git a/src/compositor/mutter/tidy/tidy-texture-frame.c b/src/compositor/mutter/tidy/tidy-texture-frame.c
index e4485aa..b45f479 100644
--- a/src/compositor/mutter/tidy/tidy-texture-frame.c
+++ b/src/compositor/mutter/tidy/tidy-texture-frame.c
@@ -68,9 +68,9 @@ struct _TidyTextureFramePrivate
 
 static void
 tidy_texture_frame_get_preferred_width (ClutterActor *self,
-                                        ClutterUnit   for_height,
-                                        ClutterUnit  *min_width_p,
-                                        ClutterUnit  *natural_width_p)
+                                        float         for_height,
+                                        float        *min_width_p,
+                                        float        *natural_width_p)
 {
   TidyTextureFramePrivate *priv = TIDY_TEXTURE_FRAME (self)->priv;
 
@@ -101,9 +101,9 @@ tidy_texture_frame_get_preferred_width (ClutterActor *self,
 
 static void
 tidy_texture_frame_get_preferred_height (ClutterActor *self,
-                                         ClutterUnit   for_width,
-                                         ClutterUnit  *min_height_p,
-                                         ClutterUnit  *natural_height_p)
+                                         float         for_width,
+                                         float        *min_height_p,
+                                         float        *natural_height_p)
 {
   TidyTextureFramePrivate *priv = TIDY_TEXTURE_FRAME (self)->priv;
 
