diff --git a/gdk/gdkpixbuf-drawable.c b/gdk/gdkpixbuf-drawable.c index e63c3a8713..ee88abe3b3 100644 --- a/gdk/gdkpixbuf-drawable.c +++ b/gdk/gdkpixbuf-drawable.c @@ -102,8 +102,17 @@ gdk_pixbuf_get_from_window (GdkWindow *src, /* We do not know what happened to this surface outside of GDK. * Especially for foreign windows, they will have been modified * by external applications. + * * So be on the safe side and: + * - mark the surface as dirty, in case the GdkWindow was + * created from a foreign X11 surface + * - flush the Cairo state + * + * For reference, see: + * - https://bugzilla.gnome.org/show_bug.cgi?id=754952 + * - https://gitlab.gnome.org/GNOME/gtk/-/issues/4456 */ + cairo_surface_mark_dirty (surface); cairo_surface_flush (surface); if (cairo_surface_get_content (surface) & CAIRO_CONTENT_ALPHA)