diff --git a/dlls/winex11.drv/window.c b/dlls/winex11.drv/window.c
index 8cd3bf3..96f758e 100644
--- a/dlls/winex11.drv/window.c
+++ b/dlls/winex11.drv/window.c
@@ -1003,6 +1003,18 @@ static void set_size_hints( Display *display, struct x11drv_win_data *data, DWOR
             size_hints->min_height = size_hints->max_height;
             size_hints->flags |= PMinSize | PMaxSize;
         }
+
+        if (data->whole_rect.left == 0 && data->whole_rect.right == screen_width &&
+            data->whole_rect.top == 0 && data->whole_rect.bottom == screen_height)
+        {
+            size_hints->x = 0;
+            size_hints->y = 0;
+            size_hints->max_width = screen_width;
+            size_hints->max_height = screen_height;
+            size_hints->min_width = size_hints->max_width;
+            size_hints->min_height = size_hints->max_height;
+            size_hints->flags |= PPosition | PMinSize | PMaxSize;
+        }
     }
     XSetWMNormalHints( display, data->whole_window, size_hints );
     XFree( size_hints );
@@ -1442,8 +1454,6 @@ static void sync_window_position( Display *display, struct x11drv_win_data *data
     XWindowChanges changes;
     unsigned int mask = 0;
 
-    if (data->managed && data->iconic) return;
-
     /* resizing a managed maximized window is not allowed */
     if (!(style & WS_MAXIMIZE) || !data->managed)
     {
