diff --git a/src/core/display.c b/src/core/display.c
index 10e273237..73583828e 100644
--- a/src/core/display.c
+++ b/src/core/display.c
@@ -1177,14 +1177,14 @@ meta_display_close (MetaDisplay *display,
   /* Stop caring about events */
   meta_display_free_events (display);
 
-  g_clear_pointer (&display->compositor, meta_compositor_destroy);
-
   meta_display_shutdown_x11 (display);
 
   g_clear_object (&display->stack);
   g_clear_pointer (&display->stack_tracker,
                    meta_stack_tracker_free);
 
+  g_clear_pointer (&display->compositor, meta_compositor_destroy);
+
   /* Must be after all calls to meta_window_unmanage() since they
    * unregister windows
    */