Index: gtk2_ardour/mouse_cursors.cc
===================================================================
--- gtk2_ardour/mouse_cursors.cc	(revision 11476)
+++ gtk2_ardour/mouse_cursors.cc	(working copy)
@@ -29,7 +29,7 @@
 
 	{
 		RefPtr<Pixbuf> p (::get_icon ("zoom_in_cursor"));
-		zoom_in = new Cursor (Display::get_default(), p, 5, 5);
+		zoom_in = new Cursor (Display::get_default(), p, 10, 5);
 	}
 
 	{
@@ -49,7 +49,7 @@
 	{
 		RefPtr<Bitmap> source = Bitmap::create (speaker_cursor_bits, speaker_cursor_width, speaker_cursor_height);
 		RefPtr<Bitmap> mask = Bitmap::create (speaker_cursor_mask_bits, speaker_cursor_width, speaker_cursor_height);
-		speaker = new Cursor (source, mask, ffg, fbg, speaker_cursor_x_hot, speaker_cursor_y_hot);
+		speaker = new Cursor (source, mask, ffg, fbg, speaker_cursor_width >> 1, speaker_cursor_height >> 1);
 	}
 
 	{
Index: gtk2_ardour/editor_mouse.cc
===================================================================
--- gtk2_ardour/editor_mouse.cc	(revision 11476)
+++ gtk2_ardour/editor_mouse.cc	(working copy)
@@ -238,61 +238,38 @@
 void
 Editor::set_canvas_cursor ()
 {
-	if (_internal_editing) {
+	switch (mouse_mode) {
+	case MouseRange:
+		current_canvas_cursor = _cursors->selector;
+		break;
 
-		switch (mouse_mode) {
-		case MouseDraw:
-			current_canvas_cursor = _cursors->midi_pencil;
-			break;
+	case MouseObject:
+		current_canvas_cursor = which_grabber_cursor();
+		break;
 
-		case MouseObject:
-			current_canvas_cursor = which_grabber_cursor();
-			break;
+	case MouseDraw:
+		current_canvas_cursor = _cursors->midi_pencil;
+		break;
 
-		case MouseTimeFX:
-			current_canvas_cursor = _cursors->midi_resize;
-			break;
+	case MouseGain:
+		current_canvas_cursor = _cursors->cross_hair;
+		break;
 
-		default:
-			return;
+	case MouseZoom:
+		if (Keyboard::the_keyboard().key_is_down (GDK_Control_L)) {
+			current_canvas_cursor = _cursors->zoom_out;
+		} else {
+			current_canvas_cursor = _cursors->zoom_in;
 		}
+		break;
 
-	} else {
+	case MouseTimeFX:
+		current_canvas_cursor = _cursors->time_fx; // just use playhead
+		break;
 
-		switch (mouse_mode) {
-		case MouseRange:
-			current_canvas_cursor = _cursors->selector;
-			break;
-
-		case MouseObject:
-			current_canvas_cursor = which_grabber_cursor();
-			break;
-
-		case MouseDraw:
-			/* shouldn't be possible, but just cover it anyway ... */
-			current_canvas_cursor = _cursors->midi_pencil;
-			break;
-
-		case MouseGain:
-			current_canvas_cursor = _cursors->cross_hair;
-			break;
-
-		case MouseZoom:
-			if (Keyboard::the_keyboard().key_is_down (GDK_Control_L)) {
-				current_canvas_cursor = _cursors->zoom_out;
-			} else {
-				current_canvas_cursor = _cursors->zoom_in;
-			}
-			break;
-
-		case MouseTimeFX:
-			current_canvas_cursor = _cursors->time_fx; // just use playhead
-			break;
-
-		case MouseAudition:
-			current_canvas_cursor = _cursors->speaker;
-			break;
-		}
+	case MouseAudition:
+		current_canvas_cursor = _cursors->speaker;
+		break;
 	}
 
 	switch (_join_object_range_state) {
@@ -574,7 +551,7 @@
 	     (mouse_mode != MouseRange) &&
 	     (mouse_mode != MouseDraw)) ||
 	    ((event->type != GDK_BUTTON_PRESS && event->type != GDK_BUTTON_RELEASE) || event->button.button > 3) ||
-	    internal_editing()) {
+	    (internal_editing() && mouse_mode != MouseTimeFX)) {
 
 		return;
 	}
@@ -1151,8 +1128,8 @@
 			/* drag notes if we're in internal edit mode */
 			_drags->set (new NoteResizeDrag (this, item), event, current_canvas_cursor);
 			return true;
-		} else if ((!internal_editing() || dynamic_cast<AudioRegionView*> (clicked_regionview)) && clicked_regionview) {
-			/* do time-FX if we're not in internal edit mode, or we are but we clicked on an audio region */
+		} else if (clicked_regionview) {
+			/* do time-FX  */
 			_drags->set (new TimeFXDrag (this, item, clicked_regionview, selection->regions.by_layer()), event);
 			return true;
 		}
Index: gtk2_ardour/midi_region_view.cc
===================================================================
--- gtk2_ardour/midi_region_view.cc	(revision 11476)
+++ gtk2_ardour/midi_region_view.cc	(working copy)
@@ -333,7 +333,8 @@
 		return trackview.editor().toggle_internal_editing_from_double_click (ev);
 	}
 
-	if (!trackview.editor().internal_editing()) {
+	if (!trackview.editor().internal_editing() || trackview.editor().current_mouse_mode() == MouseTimeFX || trackview.editor().current_mouse_mode() == MouseZoom) {
+		// handle non-draw modes elsewhere
 		return false;
 	}
 
