       canvas.context().clip()
 
       objects = filterObjects(objects)
+      transform = filterTransform(self.transform())
 
-      canvas.withTransform self.transform(), (canvas) ->
+      canvas.withTransform transform, (canvas) ->
         self.trigger "beforeDraw", canvas
         objects.invoke "draw", canvas
 

    I.scroll = Point(
      I.scroll.x.clamp(centerRect.left, centerRect.right).clamp(I.cameraBounds.left, I.cameraBounds.right - I.screen.width)
      I.scroll.y.clamp(centerRect.top, centerRect.bottom).clamp(I.cameraBounds.top, I.cameraBounds.bottom - I.screen.height)
    )    

    I.transform = Matrix.translate(-I.scroll.x, -I.scroll.y)
      .scale(I.zoom, I.zoom, objectCenter)
      .rotate(I.cameraRotation, objectCenter)

  currentObject = null

  objectFilters = []
  filterObjects = (objects) ->
    for filter in objectFilters
      objects = filter(objects)
