       @mget('overlay').set('data', {vxlim: vxlim, vylim: vylim})
 
       if @mget('select_every_mousemove')
-        @_select(vxlim, vylim, false)
+        append = e.srcEvent.shiftKey ? false
+        @_select(vxlim, vylim, false, append)
 
       return null
 

      dims = @mget('dimensions')

      [vxlim, vylim] = @model._get_dim_limits(@_baseboint, curpoint, frame, dims)
      @_select(vxlim, vylim, true)
      @mget('overlay').set('data', {})

      @_baseboint = null
      return null

    _select: ([vx0, vx1], [vy0, vy1], final) ->
      geometry = {
        type: 'rect'
        vx0: vx0

      for r in @mget('renderers')
        ds = r.get('data_source')
        sm = ds.get('selection_manager')
        sm.select(@, @plot_view.renderers[r.id], geometry, final, append)

      return null

