--- src/cairo-qt-surface.cpp.orig 2010-01-13 04:06:43.000000000 +0100 +++ src/cairo-qt-surface.cpp 2010-01-13 04:07:05.000000000 +0100 @@ -1559,10 +1559,15 @@ if (!qs->p) return CAIRO_STATUS_SURFACE_TYPE_MISMATCH; - QPaintDevice * dev = qs->p->device(); - qs->p->end(); - qs->p->begin(dev); - + /* Only flush p if we created it */ + if (qs->image || qs->pixmap) { + QPaintDevice * dev = qs->p->device(); + qs->p->end(); + qs->p->begin(dev); + } else { + qs->p->restore(); + } + return CAIRO_STATUS_SUCCESS; }