diff -r ee36ffbd4252 dwm.c
--- a/dwm.c	Sun Nov 06 20:36:23 2011 +0100
+++ b/dwm.c	Mon Nov 14 15:37:53 2011 +0000
@@ -616,10 +616,10 @@
 				c->oldh = c->h;
 				c->h = ev->height;
 			}
-			if((c->x + c->w) > m->mx + m->mw && c->isfloating)
-				c->x = m->mx + (m->mw / 2 - WIDTH(c) / 2); /* center in x direction */
-			if((c->y + c->h) > m->my + m->mh && c->isfloating)
-				c->y = m->my + (m->mh / 2 - HEIGHT(c) / 2); /* center in y direction */
+			if(!INTERSECT(c->x, c->y, c->w, c->h, m) && c->isfloating) {
+				c->x = m->mx + (m->mw/2 - WIDTH(c) /2);
+				c->y = m->my + (m->mh/2 - HEIGHT(c)/2);
+			}
 			if((ev->value_mask & (CWX|CWY)) && !(ev->value_mask & (CWWidth|CWHeight)))
 				configure(c);
 			if(ISVISIBLE(c))

