diff --git a/dlls/winex11.drv/window.c b/dlls/winex11.drv/window.c
index f466cd1..93cb7c7 100644
--- a/dlls/winex11.drv/window.c
+++ b/dlls/winex11.drv/window.c
@@ -1277,8 +1277,8 @@
  * Synchronize the X window position with the Windows one
  */
 static void sync_window_position( Display *display, struct x11drv_win_data *data,
-                                  UINT swp_flags, const RECT *old_client_rect,
-                                  const RECT *old_whole_rect )
+                                  UINT swp_flags, const RECT *old_window_rect,
+                                  const RECT *old_whole_rect, const RECT *old_client_rect )
 {
     DWORD style = GetWindowLongW( data->hwnd, GWL_STYLE );
     XWindowChanges changes;
@@ -1329,10 +1329,13 @@
 #ifdef HAVE_LIBXSHAPE
     if (data->shaped)
     {
-        int x_offset = old_whole_rect->left - data->whole_rect.left;
-        int y_offset = old_whole_rect->top - data->whole_rect.top;
-        if (x_offset || y_offset)
-            XShapeOffsetShape( display, data->whole_window, ShapeBounding, x_offset, y_offset );
+        int old_x_offset = old_window_rect->left - old_whole_rect->left;
+        int old_y_offset = old_window_rect->top - old_whole_rect->top;
+        int new_x_offset = data->window_rect.left - data->whole_rect.left;
+        int new_y_offset = data->window_rect.top - data->whole_rect.top;
+        if (old_x_offset != new_x_offset || old_y_offset != new_y_offset)
+            XShapeOffsetShape( display, data->whole_window, ShapeBounding,
+                               new_x_offset - old_x_offset, new_y_offset - old_y_offset );
     }
 #endif
     wine_tsx11_unlock();
@@ -2097,7 +2100,7 @@
     Display *display;
     struct x11drv_win_data *data = X11DRV_get_win_data( hwnd );
     DWORD new_style = GetWindowLongW( hwnd, GWL_STYLE );
-    RECT old_whole_rect, old_client_rect;
+    RECT old_window_rect, old_whole_rect, old_client_rect;
     int event_type;
 
     if (!data) return;
@@ -2105,6 +2108,7 @@
     thread_data = x11drv_thread_data();
     display = thread_data->display;
 
+    old_window_rect = data->window_rect;
     old_whole_rect  = data->whole_rect;
     old_client_rect = data->client_rect;
     data->window_rect = *rectWindow;
@@ -2163,7 +2167,8 @@
     /* don't change position if we are about to minimize or maximize a managed window */
     if (!event_type &&
         !(data->managed && (swp_flags & SWP_STATECHANGED) && (new_style & (WS_MINIMIZE|WS_MAXIMIZE))))
-        sync_window_position( display, data, swp_flags, &old_client_rect, &old_whole_rect );
+        sync_window_position( display, data, swp_flags,
+                              &old_window_rect, &old_whole_rect, &old_client_rect );
 
     if ((new_style & WS_VISIBLE) &&
         ((new_style & WS_MINIMIZE) || is_window_rect_mapped( rectWindow )))
