     @ctx.fillStyle = @mget('border_fill')
     @ctx.fill()
 
+    have_new_mapper_state = false
+    xms = @xmapper.get('mapper_state')[0]
+    yms = @xmapper.get('mapper_state')[0]
+    if Math.abs(@old_mapper_state.x-xms) > 1e-8 or Math.abs(@old_mapper_state.y - yms) > 1e-8
+      @old_mapper_state.x = xms
+      @old_mapper_state.y = yms
+      have_new_mapper_state = true
+
     @ctx.save()
 
     @ctx.beginPath()

    for level in ['image', 'underlay', 'glyph']
      renderers = @levels[level]
      for k, v of renderers
        v.render()

    @ctx.restore()

    for level in ['overlay', 'annotation', 'tool']
      renderers = @levels[level]
      for k, v of renderers
        v.render()

    if title
      sx = @view_state.get('outer_width')/2

      bottom: 0
      left: 0
      right: 0
    }

    @old_mapper_state = {
      x: null
      y: null
    }

    @am_rendering = false
