diff --git a/aegisub/src/visual_tool.cpp b/aegisub/src/visual_tool.cpp
index 3d0f34240dc56a384be11b3504461f74e90361bc..3f7f5000a42e6ef290ca8f3cd25d212b7b1441cd 100644
--- a/aegisub/src/visual_tool.cpp
+++ b/aegisub/src/visual_tool.cpp
@@ -60,8 +60,6 @@ VisualToolBase::VisualToolBase(VideoDisplay *parent, agi::Context *context)
 , active_line(0)
 , dragging(false)
 , frame_number(c->videoController->GetFrameN())
-, left_click(false)
-, left_double(false)
 , shift_down(false)
 , ctrl_down(false)
 , alt_down(false)
@@ -115,7 +113,6 @@ void VisualToolBase::OnSeek(int new_frame) {
 void VisualToolBase::OnMouseCaptureLost(wxMouseCaptureLostEvent &) {
 	holding = false;
 	dragging = false;
-	left_click = false;
 }
 
 void VisualToolBase::OnActiveLineChanged(AssDialogue *new_line) {
@@ -163,6 +160,8 @@ void VisualToolBase::SetDisplayArea(int x, int y, int w, int h) {
 
 	holding = false;
 	dragging = false;
+	if (parent->HasCapture())
+		parent->ReleaseMouse();
 	OnCoordinateSystemsChanged();
 }
 
@@ -184,8 +183,8 @@ VisualTool<FeatureType>::VisualTool(VideoDisplay *parent, agi::Context *context)
 
 template<class FeatureType>
 void VisualTool<FeatureType>::OnMouseEvent(wxMouseEvent &event) {
-	left_click = event.LeftDown();
-	left_double = event.LeftDClick();
+	bool left_click = event.LeftDown();
+	bool left_double = event.LeftDClick();
 	shift_down = event.ShiftDown();
 	ctrl_down = event.CmdDown();
 	alt_down = event.AltDown();
diff --git a/aegisub/src/visual_tool.h b/aegisub/src/visual_tool.h
index 6dc56555711239590965b6fdd907e1b726ad41fb..04aa6f533a8e15c1c75cf29515c4561dc7a28137 100644
--- a/aegisub/src/visual_tool.h
+++ b/aegisub/src/visual_tool.h
@@ -108,8 +108,6 @@ protected:
 
 	int frame_number; ///< Current frame number
 
-	bool left_click; ///< Is a left click event currently being processed?
-	bool left_double; ///< Is a left double click event currently being processed?
 	bool shift_down; ///< Is shift down?
 	bool ctrl_down; ///< Is ctrl down?
 	bool alt_down; ///< Is alt down?