diff --git a/src/compositor.c b/src/compositor.c
index ac6b318915ab769dff59a6a2f5be831d30d604c9..db430379601c5ddc015430d0d2492704f15dc56d 100644
--- a/src/compositor.c
+++ b/src/compositor.c
@@ -1271,6 +1271,11 @@ repair_screen (ScreenInfo *screen_info)
     g_return_if_fail (screen_info);
     TRACE ("entering repair_screen");
 
+    if (!screen_info->compositor_active)
+    {
+        return;
+    }
+
     display_info = screen_info->display_info;
     if (screen_info->allDamage != None)
     {
@@ -2696,6 +2701,7 @@ compositorUnmanageScreen (ScreenInfo *screen_info)
         TRACE ("Compositor not active on screen %i", screen_info->screen);
         return;
     }
+    screen_info->compositor_active = FALSE;
 
     i = 0;
     for (index = screen_info->cwindows; index; index = g_list_next (index))
@@ -2738,9 +2744,10 @@ compositorUnmanageScreen (ScreenInfo *screen_info)
     }
 
     screen_info->gaussianSize = -1;
+    screen_info->overlays = 0;
+
     XCompositeUnredirectSubwindows (display_info->dpy, screen_info->xroot, 
                                     display_info->composite_mode);
-    screen_info->compositor_active = FALSE;
 
     setAtomManagerOwner (display_info, COMPOSITING_MANAGER, screen_info->xroot, None);
 #endif /* HAVE_COMPOSITOR */