diff --git a/src/compositor.c b/src/compositor.c
index 5e327ca74db06c8b0c1ef0151ac51618c5a349d7..20edaef9dbf1aaee23b5d5b28eeec99e8b1b95ec 100644
--- a/src/compositor.c
+++ b/src/compositor.c
@@ -1287,11 +1287,7 @@ determine_mode(CWindow *cw)
         cw->shadowPict = None;
     }
 
-    if (cw->attr.class != InputOnly)
-    {
-        format = XRenderFindVisualFormat (myScreenGetXDisplay (screen_info), cw->attr.visual);
-    }
-
+    format = XRenderFindVisualFormat (myScreenGetXDisplay (screen_info), cw->attr.visual);
     if ((format) && (format->type == PictTypeDirect) && (format->direct.alphaMask))
     {
         cw->mode = WINDOW_ARGB;
@@ -1412,7 +1408,15 @@ add_win (DisplayInfo *display_info, Window id, Client *c, Window above, guint op
         TRACE ("An error occured getting window attributes, 0x%lx not added", id);
         return;
     }
-
+    
+    if (new->attr.class == InputOnly)
+    {
+        g_free (new);
+        myDisplayUngrabServer (display_info);
+        TRACE ("InputOnly window, 0x%lx not added", id);
+        return;
+    }
+    
     if (c)
     {
         screen_info = c->screen_info;
@@ -1458,20 +1462,13 @@ add_win (DisplayInfo *display_info, Window id, Client *c, Window above, guint op
         XShapeSelectInput (display_info->dpy, id, ShapeNotifyMask);
     }
 
-    if (new->attr.class == InputOnly)
-    {
-        new->damage = None;
-    }
-    else
-    {
-        new->damage = XDamageCreate (myScreenGetXDisplay (screen_info), id, XDamageReportNonEmpty);
-    }
 
     new->c = c;
     new->screen_info = screen_info;
     new->id = id;
     new->damaged = FALSE;
     new->viewable = (new->attr.map_state == IsViewable);
+    new->damage = XDamageCreate (myScreenGetXDisplay (screen_info), id, XDamageReportNonEmpty);
 #if HAVE_NAME_WINDOW_PIXMAP
     new->name_window_pixmap = None;
 #endif
diff --git a/src/settings.c b/src/settings.c
index e9b149837536af96193341075edc6b2920ccca5c..835382e706171b7f2121c7160632a0affa83a1c2 100644
--- a/src/settings.c
+++ b/src/settings.c
@@ -344,9 +344,13 @@ client_event_filter (GdkXEvent * xevent, GdkEvent * event, gpointer data)
     ScreenInfo *screen_info = (ScreenInfo *) data;
     
     if (mcs_client_process_event (screen_info->mcs_client, (XEvent *) xevent))
+    {
         return GDK_FILTER_REMOVE;
+    }
     else
+    {
         return GDK_FILTER_CONTINUE;
+    }
 }
 
 static void