diff -r ef0373b55136 -r 758a864f9613 src/gui/painting/qbackingstore.cpp --- a/src/gui/painting/qbackingstore.cpp Fri Sep 17 08:34:18 2010 +0300 +++ b/src/gui/painting/qbackingstore.cpp Mon Oct 04 01:19:32 2010 +0300 @@ -352,7 +352,7 @@ // Always flush repainted areas. dirtyOnScreen += toClean; -#ifdef Q_WS_QWS +#if defined(Q_WS_QWS) && !defined(Q_BACKINGSTORE_SUBSURFACES) toClean.translate(tlwOffset); #endif @@ -1294,7 +1294,12 @@ #ifdef Q_BACKINGSTORE_SUBSURFACES QWindowSurface *subSurface = w->windowSurface(); BeginPaintInfo beginPaintInfo; - beginPaint(toBePainted, w, subSurface, &beginPaintInfo, false); + + QPoint off = w->mapTo(tlw, QPoint()); + toBePainted.translate(off); + beginPaint(toBePainted, w, subSurface, &beginPaintInfo, true); + toBePainted.translate(-off); + if (beginPaintInfo.nothingToPaint) continue;