diff --git a/src/compositor.c b/src/compositor.c
index 6c0cac398d240d322514702220a02d0590ad7f2c..91070bfdab8ea9f949d9181d0f9181de42ace83a 100644
--- a/src/compositor.c
+++ b/src/compositor.c
@@ -2738,11 +2738,6 @@ compositorManageScreen (ScreenInfo *screen_info)
     display_info = screen_info->display_info;
     screen_info->compositor_active = FALSE;
 
-    if (!compositorIsUsable (display_info))
-    {
-        return FALSE;
-    }
-
     gdk_error_trap_push ();
     XCompositeRedirectSubwindows (display_info->dpy, screen_info->xroot, display_info->composite_mode);
     XSync (display_info->dpy, FALSE);
@@ -2756,6 +2751,7 @@ compositorManageScreen (ScreenInfo *screen_info)
     if (display_info->composite_mode == CompositeRedirectAutomatic)
     {
         /* That's enough for automatic compositing */
+        TRACE ("Automatic compositing enabled");
         return TRUE;
     }
 
@@ -2791,6 +2787,7 @@ compositorManageScreen (ScreenInfo *screen_info)
 
     XClearArea (display_info->dpy, screen_info->xroot, 0, 0, 0, 0, TRUE);
     compositorSetCMSelection (screen_info, screen_info->xfwm4_win);
+    TRACE ("Manual compositing enabled");
 
     return TRUE;
 #else
diff --git a/src/main.c b/src/main.c
index 84141ec84fe141e2dfd991a0cd1c6be36fd231b1..38de0c86c01e98d7a6a007097d293bed26b53dfa 100644
--- a/src/main.c
+++ b/src/main.c
@@ -76,9 +76,11 @@
 #define MAIN_EVENT_MASK BASE_EVENT_MASK
 #endif /* HAVE_COMPOSITOR */
 
-#define COMPOSITOR_MODE_OFF             0
-#define COMPOSITOR_MODE_AUTO            1
-#define COMPOSITOR_MODE_MANUAL          2
+enum {
+    COMPOSITOR_MODE_OFF = 0,
+    COMPOSITOR_MODE_AUTO,
+    COMPOSITOR_MODE_MANUAL
+};
 
 #ifndef DEBUG
 /* For what, IEEE Std 1003.1-2001, Section 12.2, Utility Syntax Guidelines.*/
@@ -354,22 +356,22 @@ parse_compositor (const gchar *s)
     gchar *rvalue;
     gint retval;
 
-    retval = 2;
+    retval = COMPOSITOR_MODE_MANUAL;
     rvalue = strrchr (s, '=');
     if (rvalue)
     {
         rvalue++;
         if (!strcmp (rvalue, "off"))
         {
-            retval = 0;
+            retval = COMPOSITOR_MODE_OFF;
         }
         else if (!strcmp (rvalue, "auto"))
         {
-            retval = 1;
+            retval = COMPOSITOR_MODE_AUTO;
         }
         else if (!strcmp (rvalue, "on"))
         {
-            retval = 2;
+            retval = COMPOSITOR_MODE_MANUAL;
         }
         else
         {
@@ -449,16 +451,13 @@ initialize (int argc, char **argv, gint compositor_mode)
             return -2;
         }
 
-        if (compositor_mode)
+        if (compositor_mode == COMPOSITOR_MODE_AUTO)
         {
-            gboolean xfwm4_compositor;
-
-            xfwm4_compositor = (compositor_mode > COMPOSITOR_MODE_AUTO);
-            if ((screen_info->params->use_compositing) || (compositor_mode == COMPOSITOR_MODE_AUTO))
-            {
-                xfwm4_compositor = compositorManageScreen (screen_info);
-            }
-            if (xfwm4_compositor)
+            compositorManageScreen (screen_info);
+        }
+        else if ((compositor_mode == COMPOSITOR_MODE_MANUAL) && (screen_info->params->use_compositing))
+        {
+            if (compositorManageScreen (screen_info))
             {
                 /*
                    Acquire selection on XFWM4_COMPOSITING_MANAGER to advertise our own
@@ -466,7 +465,7 @@ initialize (int argc, char **argv, gint compositor_mode)
                    show the "compositor" tab.
                  */
                 setAtomIdManagerOwner (display_info, XFWM4_COMPOSITING_MANAGER,
-                                     screen_info->xroot, screen_info->xfwm4_win);
+                                       screen_info->xroot, screen_info->xfwm4_win);
             }
         }