diff --git a/dlls/winex11.drv/desktop.c b/dlls/winex11.drv/desktop.c
index ecbcd6b3813b54300dbaa3b952f2368693af1410..fed8dd32e9fba7395e1ef58f87bcc4e6e5389cbd 100644
--- a/dlls/winex11.drv/desktop.c
+++ b/dlls/winex11.drv/desktop.c
@@ -147,15 +147,18 @@ static LONG X11DRV_desktop_SetCurrentMode(int mode)
  */
 void X11DRV_init_desktop( Window win, unsigned int width, unsigned int height )
 {
-    RECT primary_rect = get_primary_monitor_rect();
+    RECT primary_rect;
 
     root_window = win;
     managed_mode = FALSE;  /* no managed windows in desktop mode */
-    max_width = primary_rect.right - primary_rect.left;
-    max_height = primary_rect.bottom - primary_rect.top;
+
     xinerama_init( width, height );
     X11DRV_DisplayDevices_Init( TRUE );
 
+    primary_rect = get_primary_monitor_rect();
+    max_width = primary_rect.right - primary_rect.left;
+    max_height = primary_rect.bottom - primary_rect.top;
+
     /* initialize the available resolutions */
     dd_modes = X11DRV_Settings_SetHandlers("desktop", 
                                            X11DRV_desktop_GetCurrentMode,