private void InitializeStorageBasedChange(SKRectI toolSessionRect) { Document doc = ViewModels.ViewModelMain.Current.BitmapManager.ActiveDocument; var toolSize = Toolbar.GetSetting <SizeSetting>("ToolSize"); SKRectI finalRect = toolSessionRect; if (toolSize != null && toolSize.Value > 1) { int halfSize = (int)Math.Ceiling(toolSize.Value / 2f); finalRect.Inflate(halfSize, halfSize); } if (toolSessionRect.IsEmpty) { finalRect = SKRectI.Create(doc.ActiveLayer.OffsetX, doc.ActiveLayer.OffsetY, doc.ActiveLayer.Width, doc.ActiveLayer.Height); } if (UseDocumentRectForUndo) { finalRect = SKRectI.Create(0, 0, doc.Width, doc.Height); } if (_customRectReported) { _customRectReported = false; finalRect = _rectReportedByTool; _rectReportedByTool = SKRectI.Empty; } _change = new StorageBasedChange(doc, new[] { new LayerChunk(doc.ActiveLayer, finalRect) }); }