Index: src/gui/painting/qwindowsurface_x11.cpp =================================================================== --- src/gui/painting/qwindowsurface_x11.cpp (revision 698283) +++ src/gui/painting/qwindowsurface_x11.cpp (working copy) @@ -107,11 +107,21 @@ return false; GC gc = XCreateGC(X11->display, d_ptr->device.handle(), 0, 0); - XCopyArea(X11->display, d_ptr->device.handle(), d_ptr->device.handle(), gc, - rect.x(), rect.y(), rect.width(), rect.height(), - rect.x()+dx, rect.y()+dy); + Pixmap temp = XCreatePixmap(X11->display, d_ptr->device.handle(), + rect.width(), rect.height(), d_ptr->device.depth()); + XCopyArea(X11->display, d_ptr->device.handle(), temp, gc, + rect.x(), rect.y(), rect.width(), rect.height(), 0, 0); + XCopyArea(X11->display, temp, d_ptr->device.handle(), gc, + 0, 0, rect.width(), rect.height(), rect.x() + dx, rect.y() + dy); + XFreePixmap(X11->display, temp); XFreeGC(X11->display, gc); + //GC gc = XCreateGC(X11->display, d_ptr->device.handle(), 0, 0); + //XCopyArea(X11->display, d_ptr->device.handle(), d_ptr->device.handle(), gc, + // rect.x(), rect.y(), rect.width(), rect.height(), + // rect.x()+dx, rect.y()+dy); + //XFreeGC(X11->display, gc); + return true; }