diff --git a/src/client.c b/src/client.c
index ed5e9f52b7428b0945ffcd1ba5eb8d11e8a41dd8..f6d4375fb43af1b32b1dccf448b4fe0453c87069 100644
--- a/src/client.c
+++ b/src/client.c
@@ -258,26 +258,26 @@ clientUpdateAllFrames (ScreenInfo *screen_info, int mask)
             /* Recompute size and position of maximized windows */
             if (FLAG_TEST (c->flags, CLIENT_FLAG_MAXIMIZED_HORIZ | CLIENT_FLAG_MAXIMIZED_VERT))
             {
-                 maximization_flags |= FLAG_TEST (c->flags,
-                     CLIENT_FLAG_MAXIMIZED_HORIZ) ? WIN_STATE_MAXIMIZED_HORIZ : 0;
-                 maximization_flags |= FLAG_TEST (c->flags,
-                     CLIENT_FLAG_MAXIMIZED_VERT) ? WIN_STATE_MAXIMIZED_VERT : 0;
+                maximization_flags |= FLAG_TEST (c->flags,
+                    CLIENT_FLAG_MAXIMIZED_HORIZ) ? WIN_STATE_MAXIMIZED_HORIZ : 0;
+                maximization_flags |= FLAG_TEST (c->flags,
+                    CLIENT_FLAG_MAXIMIZED_VERT) ? WIN_STATE_MAXIMIZED_VERT : 0;
 
-                 /* Force an update by clearing the internal flags */
-                 FLAG_UNSET (c->flags, CLIENT_FLAG_MAXIMIZED_HORIZ | CLIENT_FLAG_MAXIMIZED_VERT);
-                 clientToggleMaximized (c, maximization_flags, FALSE);
+                /* Force an update by clearing the internal flags */
+                FLAG_UNSET (c->flags, CLIENT_FLAG_MAXIMIZED_HORIZ | CLIENT_FLAG_MAXIMIZED_VERT);
+                clientToggleMaximized (c, maximization_flags, FALSE);
 
-                 configure_flags |= CFG_FORCE_REDRAW;
-                 mask &= ~UPDATE_FRAME;
+                configure_flags |= CFG_FORCE_REDRAW;
+                mask &= ~UPDATE_FRAME;
             }
         }
         if (configure_flags != 0L)
         {
-             wc.x = c->x;
-             wc.y = c->y;
-             wc.width = c->width;
-             wc.height = c->height;
-             clientConfigure (c, &wc, CWX | CWY | CWWidth | CWHeight, configure_flags);
+            wc.x = c->x;
+            wc.y = c->y;
+            wc.width = c->width;
+            wc.height = c->height;
+            clientConfigure (c, &wc, CWX | CWY | CWWidth | CWHeight, configure_flags);
         }
         if (mask & UPDATE_FRAME)
         {
diff --git a/src/display.h b/src/display.h
index 463ebe172b517e507acb3bba6ba812c5f1e5131c..38876d2fa74c313668c9844ff19fa9174d004b09 100644
--- a/src/display.h
+++ b/src/display.h
@@ -87,10 +87,10 @@ enum
 
 enum
 {
-    CORNER_TOP_LEFT = 0,
-    CORNER_TOP_RIGHT,
-    CORNER_BOTTOM_LEFT,
+    CORNER_BOTTOM_LEFT = 0,
     CORNER_BOTTOM_RIGHT,
+    CORNER_TOP_LEFT,
+    CORNER_TOP_RIGHT,
     CORNER_COUNT
 };
 
@@ -128,7 +128,7 @@ enum
     T_PRESSED,
     STATE_COUNT
 };
-#define STATE_TOGGLED (STATE_COUNT >> 1)
+#define STATE_TOGGLED (STATE_COUNT / 2)
 
 enum
 {
diff --git a/src/frame.c b/src/frame.c
index 09f8c76b4128878bd22a3205f18b0a483ce2d676..cac3921c1f1ef8aa1a4d9755e09330ca5224420c 100644
--- a/src/frame.c
+++ b/src/frame.c
@@ -41,6 +41,13 @@
 #define ShapeInput 2
 #endif
 
+typedef struct
+{
+    xfwmPixmap pm_title;
+    xfwmPixmap pm_sides[SIDE_COUNT];
+} FramePixmap;
+
+
 int
 frameDecorationLeft (ScreenInfo *screen_info)
 {
@@ -1144,6 +1151,7 @@ frameDraw (Client * c, gboolean clear_all)
                 requires_clearing);
         }
         frameSetShape (c, state, &frame_pix, button_x);
+
         xfwmPixmapFree (&frame_pix.pm_title);
         xfwmPixmapFree (&frame_pix.pm_sides[SIDE_BOTTOM]);
         xfwmPixmapFree (&frame_pix.pm_sides[SIDE_LEFT]);
diff --git a/src/frame.h b/src/frame.h
index f95b583371dc059384f33b59eec932070b3535a3..e158f317e8012e447bd95f2aad493238ea02e0e2 100644
--- a/src/frame.h
+++ b/src/frame.h
@@ -30,14 +30,6 @@
 #include "mypixmap.h"
 #include "client.h"
 
-struct _FramePixmap
-{
-    xfwmPixmap pm_title;
-    xfwmPixmap pm_sides[SIDE_COUNT];
-};
-
-typedef struct _FramePixmap FramePixmap;
-
 int                      frameDecorationLeft                    (ScreenInfo *);
 int                      frameDecorationRight                   (ScreenInfo *);
 int                      frameDecorationTop                     (ScreenInfo *);
diff --git a/src/settings.c b/src/settings.c
index d5ebed999d7118bfe9f993ccc9780aaceec3d931..3685532f02e5486934aa9cadc09ab479ac9877d8 100644
--- a/src/settings.c
+++ b/src/settings.c
@@ -54,7 +54,7 @@
 
 /* Forward static decls. */
 
-static void              check_for_grabs      (ScreenInfo *);
+static void              update_grabs      (ScreenInfo *);
 static void              set_settings_margin  (ScreenInfo *,
                                                int ,
                                                int);
@@ -84,16 +84,13 @@ static gboolean          reloadScreenSettings (ScreenInfo *,
                                                int);
 
 static void
-check_for_grabs (ScreenInfo *screen_info)
+update_grabs (ScreenInfo *screen_info)
 {
+    clientUngrabMouseButtonForAll (screen_info);
     if ((screen_info->params->raise_on_click) || (screen_info->params->click_to_focus))
     {
         clientGrabMouseButtonForAll (screen_info);
     }
-    else if (!(screen_info->params->raise_on_click) && !(screen_info->params->click_to_focus))
-    {
-        clientUngrabMouseButtonForAll (screen_info);
-    }
 }
 
 static void
@@ -224,7 +221,7 @@ notify_cb (const char *name, const char *channel_name, McsAction action, McsSett
                     else if (!strcmp (name, "Xfwm/ClickToFocus"))
                     {
                         screen_info->params->click_to_focus = setting->data.v_int;
-                        check_for_grabs (screen_info);
+                        update_grabs (screen_info);
                     }
                     else if (!strcmp (name, "Xfwm/FocusNewWindow"))
                     {
@@ -245,7 +242,7 @@ notify_cb (const char *name, const char *channel_name, McsAction action, McsSett
                     else if (!strcmp (name, "Xfwm/RaiseOnClick"))
                     {
                         screen_info->params->raise_on_click = setting->data.v_int;
-                        check_for_grabs (screen_info);
+                        update_grabs (screen_info);
                     }
                     else if (!strcmp (name, "Xfwm/SnapToBorder"))
                     {
@@ -474,12 +471,11 @@ notify_cb (const char *name, const char *channel_name, McsAction action, McsSett
                     else if (!strcmp (name, "Xfwm/RaiseWithAnyButton"))
                     {
                         screen_info->params->raise_with_any_button = setting->data.v_int;
-                        check_for_grabs (screen_info);
+                        update_grabs (screen_info);
                     }
                     else if (!strcmp (name, "Xfwm/RestoreOnMove"))
                     {
                         screen_info->params->restore_on_move = setting->data.v_int;
-                        check_for_grabs (screen_info);
                     }
                     else if (!strcmp (name, "Xfwm/ScrollWorkspaces"))
                     {
@@ -623,7 +619,6 @@ loadMcsData (ScreenInfo *screen_info, Settings *rc)
                 &setting) == MCS_SUCCESS)
         {
             setBooleanValueFromInt ("click_to_focus", setting->data.v_int, rc);
-            check_for_grabs (screen_info);
             mcs_setting_free (setting);
         }
         if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/FocusNewWindow", CHANNEL1,
@@ -654,7 +649,6 @@ loadMcsData (ScreenInfo *screen_info, Settings *rc)
                 &setting) == MCS_SUCCESS)
         {
             setBooleanValueFromInt ("raise_on_click", setting->data.v_int, rc);
-            check_for_grabs (screen_info);
             mcs_setting_free (setting);
         }
         if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/SnapToBorder", CHANNEL1,
@@ -812,10 +806,7 @@ loadMcsData (ScreenInfo *screen_info, Settings *rc)
         if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/EasyClick", CHANNEL5,
                 &setting) == MCS_SUCCESS)
         {
-            if (setting->type == MCS_TYPE_STRING)
-            {
-                setValue ("easy_click", setting->data.v_string, rc);
-            }
+            setValue ("easy_click", setting->data.v_string, rc);
             mcs_setting_free (setting);
         }
         if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/FocusHint", CHANNEL5,
@@ -900,14 +891,12 @@ loadMcsData (ScreenInfo *screen_info, Settings *rc)
                 &setting) == MCS_SUCCESS)
         {
             setBooleanValueFromInt ("raise_with_any_button", setting->data.v_int, rc);
-            check_for_grabs (screen_info);
             mcs_setting_free (setting);
         }
         if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/RestoreOnMove", CHANNEL5,
                 &setting) == MCS_SUCCESS)
         {
             setBooleanValueFromInt ("restore_on_move", setting->data.v_int, rc);
-            check_for_grabs (screen_info);
             mcs_setting_free (setting);
         }
         if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/ScrollWorkspaces", CHANNEL5,
@@ -1520,6 +1509,7 @@ loadSettings (ScreenInfo *screen_info)
     loadRcData (screen_info, rc);
     loadMcsData (screen_info, rc);
     loadTheme (screen_info, rc);
+    update_grabs (screen_info);
 
     if (!loadKeyBindings (screen_info, rc))
     {
@@ -1656,7 +1646,7 @@ loadSettings (ScreenInfo *screen_info)
 static void
 unloadTheme (ScreenInfo *screen_info)
 {
-    int i;
+    int i, j;
 
     TRACE ("entering unloadTheme");
 
@@ -1672,17 +1662,17 @@ unloadTheme (ScreenInfo *screen_info)
     }
     for (i = 0; i < BUTTON_COUNT; i++)
     {
-        xfwmPixmapFree (&screen_info->buttons[i][ACTIVE]);
-        xfwmPixmapFree (&screen_info->buttons[i][INACTIVE]);
-        xfwmPixmapFree (&screen_info->buttons[i][PRESSED]);
-        xfwmPixmapFree (&screen_info->buttons[i][T_ACTIVE]);
-        xfwmPixmapFree (&screen_info->buttons[i][T_INACTIVE]);
-        xfwmPixmapFree (&screen_info->buttons[i][T_PRESSED]);
+        for (j = 0; j < STATE_COUNT; j++)
+        {
+            xfwmPixmapFree (&screen_info->buttons[i][j]);
+        }
     }
     for (i = 0; i < TITLE_COUNT; i++)
     {
         xfwmPixmapFree (&screen_info->title[i][ACTIVE]);
         xfwmPixmapFree (&screen_info->title[i][INACTIVE]);
+        xfwmPixmapFree (&screen_info->top[i][ACTIVE]);
+        xfwmPixmapFree (&screen_info->top[i][INACTIVE]);
     }
     if (screen_info->box_gc != None)
     {