@@ -, +, @@ --- src/cairo-xcb-surface-render.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) --- a/src/cairo-xcb-surface-render.c +++ a/src/cairo-xcb-surface-render.c @@ -3123,8 +3123,10 @@ _clip_and_composite_boxes (cairo_xcb_surface_t *dst, clip = _cairo_clip_intersect_boxes (clip, boxes); status = _cairo_clip_get_polygon (clip, &polygon, &fill_rule, &antialias); - _cairo_clip_path_destroy (clip->path); - clip->path = NULL; + if (! _cairo_clip_is_all_clipped (clip)) { + _cairo_clip_path_destroy (clip->path); + clip->path = NULL; + } if (likely (status == CAIRO_INT_STATUS_SUCCESS)) { cairo_clip_t *saved_clip = extents->clip; extents->clip = clip; --