--- xfwm4-trunk/src/client.c.orig 2008-11-16 01:10:43.000000000 +0100 +++ xfwm4-trunk/src/client.c 2008-11-16 01:10:51.000000000 +0100 @@ -3128,12 +3128,14 @@ monitor_nbr = find_monitor_at_point (screen_info->gscr, cx, cy); gdk_screen_get_monitor_geometry (screen_info->gscr, monitor_nbr, &rect); - full_x = MAX (screen_info->params->xfwm_margins[STRUTS_LEFT], rect.x); - full_y = MAX (screen_info->params->xfwm_margins[STRUTS_TOP], rect.y); + full_x = MAX (screen_info->params->xfwm_margins[STRUTS_LEFT], + screen_info->params->xfwm_margins[STRUTS_LEFT] + rect.x); + full_y = MAX (screen_info->params->xfwm_margins[STRUTS_TOP], + screen_info->params->xfwm_margins[STRUTS_TOP] + rect.y); full_w = MIN (screen_info->width - screen_info->params->xfwm_margins[STRUTS_RIGHT], - rect.x + rect.width) - full_x; + rect.x + rect.width - screen_info->params->xfwm_margins[STRUTS_RIGHT]) - full_x; full_h = MIN (screen_info->height - screen_info->params->xfwm_margins[STRUTS_BOTTOM], - rect.y + rect.height) - full_y; + rect.y + rect.height - screen_info->params->xfwm_margins[STRUTS_BOTTOM]) - full_y; if (FLAG_TEST_ALL (c->flags, CLIENT_FLAG_MAXIMIZED)) {