diff --git a/libs/image/KisPrecisePaintDeviceWrapper.cpp b/libs/image/KisPrecisePaintDeviceWrapper.cpp --- a/libs/image/KisPrecisePaintDeviceWrapper.cpp +++ b/libs/image/KisPrecisePaintDeviceWrapper.cpp @@ -20,6 +20,7 @@ #include #include "kis_paint_device.h" +#include "kis_wrapped_rect.h" #include "KisFastDeviceProcessingUtils.h" #include @@ -150,9 +151,19 @@ QRegion requestedRects; Q_FOREACH (const QRect &rc, rects) { - const QRect croppedRect = rc & srcExtent; - - requestedRects += croppedRect; + if (m_d->srcDevice->defaultBounds()->wrapAroundMode()) { + const QRect wrapRect = m_d->srcDevice->defaultBounds()->bounds(); + KisWrappedRect wrappedRect(rc, wrapRect); + Q_FOREACH (const QRect &wrc, wrappedRect) { + const QRect croppedRect = wrc & srcExtent; + + requestedRects += croppedRect; + } + } else { + const QRect croppedRect = rc & srcExtent; + + requestedRects += croppedRect; + } } QRegion diff(requestedRects); @@ -203,4 +214,3 @@ WriteProcessor(channelCount)); } } -