     .scale @getFilterSourceSizeRatio()
     .mul elementToFilterScratchMatrix
 
-    filterScratchToTargetMatrix = elementToFilterScratchMatrix.inv.mul elementToTargetMatrix
+    filterScratch = target.newBitmap elementSpaceDrawArea.size.add(@radius * 2).mul scale
+    .drawBitmap filterSourceTargetToFilterScratchMatrix, filterSource._currentDrawTarget
 
-    # log
-    #   scale: scale
-    #   targetToFilterSource: filterSource._currentToTargetMatrix.inv
-    #   elementSpaceDrawArea: elementSpaceDrawArea
-    #   filterSourceTargetToFilterScratchMatrix:filterSourceTargetToFilterScratchMatrix
-
-    filterScratch.drawBitmap filterSourceTargetToFilterScratchMatrix, filterSource._currentDrawTarget
-
-    # log fsBefore = filterScratch.clone()
-
-    filterScratch = @filter filterScratch, scale
-
-    # log FilterElement:
-    #   filterScratch: before: fsBefore, after: filterScratch
-    #   elementSpaceDrawArea: elementSpaceDrawArea
-    #   scale: scale
-    #   filterScratchToTargetMatrix:filterScratchToTargetMatrix
-    #   options: options
-
-    target.drawBitmap filterScratchToTargetMatrix, filterScratch, options
+    target.drawBitmap(
+      elementToFilterScratchMatrix.inv.mul elementToTargetMatrix
+      @filter filterScratch, scale
+      options
+    )
 
   ################
   # PRIVATE

      if _currentSize.eq filterSourceSize
        1
      else
        # log filterSourceSizeRatio:_currentSize.div filterSourceSize
        _currentSize.div filterSourceSize

    elementSpaceSourceDrawArea: getterNew: (pending) ->


  fillShape: (target, elementToTargetMatrix, options) ->
    filterSource = @getFilterSourceElement()
    elementSpaceDrawArea = @getElementSpaceDrawArea()

    scale = elementToTargetMatrix.exactScaler

    elementToFilterScratchMatrix = Matrix.translate elementSpaceDrawArea.location.neg.add @radius
    .scale scale
