diff --git a/src/client.c b/src/client.c
index 675a30c947435615b62cef1f8a118ff068c42bc4..bf2aaae82d70dcee880f7ae7ba3de1efa6c0728f 100644
--- a/src/client.c
+++ b/src/client.c
@@ -608,6 +608,9 @@ clientConstrainRatio (Client * c, int *w, int *h, int corner)
     }
 }
 
+#define WIN_MOVED   (mask & (CWX | CWY))
+#define WIN_RESIZED (mask & (CWWidth | CWHeight))
+
 static void
 clientConfigureWindows (Client * c, XWindowChanges * wc, unsigned long mask, unsigned short flags)
 {
@@ -628,6 +631,11 @@ clientConfigureWindows (Client * c, XWindowChanges * wc, unsigned long mask, uns
         change_values.height = frameHeight (c);
         XConfigureWindow (clientGetXDisplay (c), c->frame, change_mask, &change_values);
 
+        if (WIN_RESIZED || (flags & CFG_FORCE_REDRAW))
+        {
+            frameDraw (c, (flags & CFG_FORCE_REDRAW));
+        }
+
         change_values.x = frameLeft (c);
         change_values.y = frameTop (c);
         change_values.width = c->width;
@@ -641,7 +649,6 @@ clientConfigure (Client * c, XWindowChanges * wc, unsigned long mask, unsigned s
 {
     XConfigureEvent ce;
     int px, py, pwidth, pheight;
-    gboolean moved, resized;
 
     g_return_if_fail (c != NULL);
     g_return_if_fail (c->window != None);
@@ -650,11 +657,8 @@ clientConfigure (Client * c, XWindowChanges * wc, unsigned long mask, unsigned s
     TRACE ("configuring client \"%s\" (0x%lx) %s, type %u", c->name,
         c->window, flags & CFG_CONSTRAINED ? "constrained" : "not contrained", c->type);
 
-    moved = FALSE;
-    resized = FALSE;
     if (mask & CWX)
     {
-        moved = TRUE;
         if (!FLAG_TEST (c->xfwm_flags, XFWM_FLAG_MOVING_RESIZING))
         {
             c->x = wc->x;
@@ -662,7 +666,6 @@ clientConfigure (Client * c, XWindowChanges * wc, unsigned long mask, unsigned s
     }
     if (mask & CWY)
     {
-        moved = TRUE;
         if (!FLAG_TEST (c->xfwm_flags, XFWM_FLAG_MOVING_RESIZING))
         {
             c->y = wc->y;
@@ -670,12 +673,10 @@ clientConfigure (Client * c, XWindowChanges * wc, unsigned long mask, unsigned s
     }
     if (mask & CWWidth)
     {
-        resized = TRUE;
         clientSetWidth (c, wc->width);
     }
     if (mask & CWHeight)
     {
-        resized = TRUE;
         clientSetHeight (c, wc->height);
     }
     if (mask & CWBorderWidth)
@@ -741,35 +742,27 @@ clientConfigure (Client * c, XWindowChanges * wc, unsigned long mask, unsigned s
         if (c->x != px)
         {
             mask |= CWX;
-            moved = TRUE;
         }
         if (c->y != py)
         {
             mask |= CWY;
-            moved = TRUE;
         }
 
         if (c->width != pwidth)
         {
             mask |= CWWidth;
-            resized = TRUE;
         }
         if (c->height != pheight)
         {
             mask |= CWHeight;
-            resized = TRUE;
         }
     }
 
-    if (resized || (flags & CFG_FORCE_REDRAW))
-    {
-        frameDraw (c, (flags & CFG_FORCE_REDRAW));
-    }
     clientConfigureWindows (c, wc, mask, flags);
 
     if ((flags & CFG_NOTIFY) ||
-        ((flags & CFG_REQUEST) && !(moved || resized)) ||
-        (moved && !resized))
+        ((flags & CFG_REQUEST) && !(WIN_MOVED || WIN_RESIZED)) ||
+        (WIN_MOVED && !WIN_RESIZED))
     {
         DBG ("Sending ConfigureNotify");
         ce.type = ConfigureNotify;
@@ -786,6 +779,8 @@ clientConfigure (Client * c, XWindowChanges * wc, unsigned long mask, unsigned s
         XSendEvent (clientGetXDisplay (c), c->window, FALSE,
                     StructureNotifyMask, (XEvent *) & ce);
     }
+#undef WIN_MOVED
+#undef WIN_RESIZED
 }
 
 void