     renderPos = @worldToScreen(@camera.point, @cameraScale)
     @context.drawImage(image, renderPos.x, renderPos.y, @$el.width(), @$el.height())
 
-  fillTiles: (image, rect=@camera) ->
+  fillTiles: (image, pattern, rect=@camera) ->
     renderPos = @worldToScreen(rect, @cameraScale)
-    @context.save();
-    @context.fillStyle = @context.createPattern image, 'repeat'
+    fillSave = @context.fillStyle
+    @context.fillStyle = pattern
     @context.fillRect(renderPos.point.x,renderPos.point.y, renderPos.extent.x,renderPos.extent.y)
-    @context.restore()
+    @context.fillStyle = fillSave
 
   drawAnim: (anim, x, y, frame) ->
     return if not @_validateImage(anim)

    super(canvas,loader)
    @screenOverlays = []
    @renderer = new eburp.TileObjectRenderer
    @

  # Object Tracking

  renderPost: (scene) ->
    overlay = @getScreenOverlay()
    return if not overlay
    @overlayPattern ?= @context.createPattern overlay, 'repeat'
    return if not @camera or not @context or not @tileMap
    @fillTiles(overlay, @overlayPattern, @getCameraClip())

  renderFeatures:(clipRect) ->
    if false and @tileMap.map.features
