- changed.scale(size().width(), pixmap->size().width(), size().height(), pixmap->size().height());
+ /* incoming "changed" regions are relative to the physical pixmap area, so they have to be scaled to the virtual pixmap area, then to the screen */
+ changed.scale(m_pixmap_dest.width(), 720, m_pixmap_dest.height(), 576);
+ changed.moveBy(ePoint(m_pixmap_dest.x(), m_pixmap_dest.y()));
+
+ if (pixmap->size().width() && pixmap->size().height())
+ changed.scale(size().width(), pixmap->size().width(), size().height(), pixmap->size().height());