       vr = @plot_canvas_view.frame.y_ranges['default']
       expect(vr.start).to.be.closeTo(-0.833, 0.01)
       expect(vr.end).to.be.closeTo(0.833, 0.01)
+
+    it "should zoom the y-axis only because sx is off frame", ->
+      wheel_zoom = new WheelZoomTool({dimensions: ['width', 'height']})
+
+      @plot.add_tools(wheel_zoom)
+
+      wheel_zoom_view = new wheel_zoom.default_view({
+        model: wheel_zoom
+        plot_model: @plot.plot_canvas
+        plot_view: @plot_canvas_view
+      })
+
+      # positive delta will zoom in
+      zoom_event = {"bokeh": {sx: 0, sy: 300, delta: 100}}
+
+      # perform the tool action
+      wheel_zoom_view._scroll(zoom_event)
+
+      hr = @plot_canvas_view.frame.x_ranges['default']
+      expect([hr.start, hr.end]).to.be.deep.equal([-1.0, 1.0])
+      vr = @plot_canvas_view.frame.y_ranges['default']
+      expect(vr.start).to.be.closeTo(-0.833, 0.01)
+      expect(vr.end).to.be.closeTo(0.833, 0.01)
+
+    it "should zoom centered around the zoom point", ->
+      wheel_zoom = new WheelZoomTool({dimensions: ['height', 'width']})
+
+      @plot.add_tools(wheel_zoom)
+
+      wheel_zoom_view = new wheel_zoom.default_view({
+        model: wheel_zoom
+        plot_model: @plot.plot_canvas
+        plot_view: @plot_canvas_view
+      })
+
+      # positive delta will zoom in
+      zoom_event = {"bokeh": {sx: 100, sy: 100, delta: 100}}
+
+      # perform the tool action
+      wheel_zoom_view._scroll(zoom_event)
+
+      hr = @plot_canvas_view.frame.x_ranges['default']
+      expect(hr.start).to.be.closeTo(-0.945, 0.01)
+      expect(hr.end).to.be.closeTo(0.722, 0.01)
+      vr = @plot_canvas_view.frame.y_ranges['default']
+      expect(vr.start).to.be.closeTo(-0.722, 0.01)
+      expect(vr.end).to.be.closeTo(0.945, 0.01)

    beforeEach ->
      utils.stub_canvas()

      @plot = new Plot({
         x_range: new Range1d({start: -1, end: 1})
         y_range: new Range1d({start: -1, end: 1})

      vr = @plot_canvas_view.frame.y_ranges['default']
      expect([vr.start, vr.end]).to.be.deep.equal([-1.0, 1.0])

    it "should zoom the x-axis only because sy is off frame", ->
      wheel_zoom = new WheelZoomTool({dimensions: ['height', 'width']})

      @plot.add_tools(wheel_zoom)

      wheel_zoom_view = new wheel_zoom.default_view({
        model: wheel_zoom
        plot_model: @plot.plot_canvas
        plot_view: @plot_canvas_view
      })

      # positive delta will zoom in
      zoom_event = {"bokeh": {sx: 300, sy: 0, delta: 100}}

      # perform the tool action
      wheel_zoom_view._scroll(zoom_event)

      hr = @plot_canvas_view.frame.x_ranges['default']
      expect(hr.start).to.be.closeTo(-0.833, 0.01)
      expect(hr.end).to.be.closeTo(0.833, 0.01)
      vr = @plot_canvas_view.frame.y_ranges['default']
      expect([vr.start, vr.end]).to.be.deep.equal([-1.0, 1.0])

    it "should zoom the y-axis only because dimensions arg is set", ->
      wheel_zoom = new WheelZoomTool({dimensions: ['height']})

      @plot.add_tools(wheel_zoom)
