@@ -213,7 +213,7 @@ void ToolLoopManager::doLoopStep(bool last_step)
213213
214214 // Calculate the area to be updated in all document observers.
215215 Region& dirty_area = m_toolLoop->getDirtyArea ();
216- calculateDirtyArea (m_toolLoop, points_to_interwine, dirty_area);
216+ calculateDirtyArea (points_to_interwine, dirty_area);
217217
218218 if (m_toolLoop->getTracePolicy () == TracePolicyLast) {
219219 Region prev_dirty_area = dirty_area;
@@ -235,7 +235,7 @@ void ToolLoopManager::snapToGrid(Point& point)
235235 m_toolLoop->getDocumentSettings ()->snapToGrid (point);
236236}
237237
238- void ToolLoopManager::calculateDirtyArea (ToolLoop* loop, const Points& points, Region& dirty_area)
238+ void ToolLoopManager::calculateDirtyArea (const Points& points, Region& dirty_area)
239239{
240240 dirty_area.clear ();
241241
@@ -245,21 +245,21 @@ void ToolLoopManager::calculateDirtyArea(ToolLoop* loop, const Points& points, R
245245
246246 // Expand the dirty-area with the pen width
247247 Rect r1, r2;
248- loop ->getPointShape ()->getModifiedArea (loop , minpt.x , minpt.y , r1);
249- loop ->getPointShape ()->getModifiedArea (loop , maxpt.x , maxpt.y , r2);
248+ m_toolLoop ->getPointShape ()->getModifiedArea (m_toolLoop , minpt.x , minpt.y , r1);
249+ m_toolLoop ->getPointShape ()->getModifiedArea (m_toolLoop , maxpt.x , maxpt.y , r2);
250250
251251 dirty_area.createUnion (dirty_area, Region (r1.createUnion (r2)));
252252 }
253253
254254 // Apply offset mode
255- Point offset (loop ->getOffset ());
255+ Point offset (m_toolLoop ->getOffset ());
256256 dirty_area.offset (-offset);
257257
258258 // Apply tiled mode
259- TiledMode tiledMode = loop ->getDocumentSettings ()->getTiledMode ();
259+ TiledMode tiledMode = m_toolLoop ->getDocumentSettings ()->getTiledMode ();
260260 if (tiledMode != TILED_NONE ) {
261- int w = loop ->sprite ()->width ();
262- int h = loop ->sprite ()->height ();
261+ int w = m_toolLoop ->sprite ()->width ();
262+ int h = m_toolLoop ->sprite ()->height ();
263263 Region sprite_area (Rect (0 , 0 , w, h));
264264 Region outside;
265265 outside.createSubtraction (dirty_area, sprite_area);
@@ -312,6 +312,11 @@ void ToolLoopManager::calculateMinMax(const Points& points, Point& minpt, Point&
312312 maxpt.x = MAX (maxpt.x , points[c].x );
313313 maxpt.y = MAX (maxpt.y , points[c].y );
314314 }
315+
316+ if (m_toolLoop->zoom ().scale () < 1.0 ) {
317+ maxpt.x += m_toolLoop->zoom ().remove (1 );
318+ maxpt.y += m_toolLoop->zoom ().remove (1 );
319+ }
315320}
316321
317322} // namespace tools
0 commit comments