diff --git a/gdk/gdkwindow.c b/gdk/gdkwindow.c index 1a64f43cb4..1642424c67 100644 --- a/gdk/gdkwindow.c +++ b/gdk/gdkwindow.c @@ -2765,6 +2765,9 @@ gdk_window_flush_implicit_paint (GdkWindow *window) paint->flushed = TRUE; region = cairo_region_copy (window->clip_region_with_children); + cairo_region_translate (region, window->abs_x, window->abs_y); + cairo_region_intersect (region, paint->region); + /* Don't flush active double buffers, as that may show partially done * rendering */ for (list = window->paint_stack; list != NULL; list = list->next) @@ -2774,9 +2777,6 @@ gdk_window_flush_implicit_paint (GdkWindow *window) cairo_region_subtract (region, tmp_paint->region); } - cairo_region_translate (region, -window->abs_x, -window->abs_y); - cairo_region_intersect (region, paint->region); - if (!GDK_WINDOW_DESTROYED (window) && !cairo_region_is_empty (region)) { cairo_t *cr;