diff --git a/src/cairo-xlib-surface.c b/src/cairo-xlib-surface.c
index 353cbcd..1a053d0 100644
--- a/src/cairo-xlib-surface.c
+++ b/src/cairo-xlib-surface.c
@@ -1818,7 +1817,8 @@ _recategorize_composite_operation (cairo_xlib_surface_t	      *dst,
 	    return DO_XTILE;
     }
 
-    if (dst->buggy_repeat && src_attr->extend == CAIRO_EXTEND_REPEAT)
+    if (dst->buggy_repeat && src_attr->extend == CAIRO_EXTEND_REPEAT &&
+	    (src->width != 1 || src->height != 1))
 	return DO_UNSUPPORTED;
 
     if (! CAIRO_SURFACE_RENDER_HAS_COMPOSITE (src))
