diff --git a/aegisub/video_display.cpp b/aegisub/video_display.cpp
index 0fb4b8cafbac32eff30cded6ca4f410b148d39a1..3b12ce08d1f035edfe2bf6e6c4aa074d9f6fd1bf 100644
--- a/aegisub/video_display.cpp
+++ b/aegisub/video_display.cpp
@@ -458,6 +458,10 @@ void VideoDisplay::OnMouseEvent(wxMouseEvent& event) {
 	// Locked?
 	if (locked) return;
 
+	// Mouse coordinates
+	mouse_x = event.GetX();
+	mouse_y = event.GetY();
+
 	// Disable when playing
 	if (VideoContext::Get()->IsPlaying()) return;
 
@@ -643,8 +647,8 @@ void VideoDisplay::OnCopyCoords(wxCommandEvent &event) {
 	if (wxTheClipboard->Open()) {
 		int sw,sh;
 		VideoContext::Get()->GetScriptSize(sw,sh);
-		int vx = (sw * visual->mouseX + w/2) / w;
-		int vy = (sh * visual->mouseY + h/2) / h;
+		int vx = (sw * mouse_x + w/2) / w;
+		int vy = (sh * mouse_y + h/2) / h;
 		wxTheClipboard->SetData(new wxTextDataObject(wxString::Format(_T("%i,%i"),vx,vy)));
 		wxTheClipboard->Close();
 	}
diff --git a/aegisub/video_display.h b/aegisub/video_display.h
index 7cf2e75857f2c20806b698b3c5397e171463b687..871835b88cf3669c10d3725f6ac10d121cce5452 100644
--- a/aegisub/video_display.h
+++ b/aegisub/video_display.h
@@ -73,6 +73,7 @@ private:
 	wxSize origSize;
 	int w,h;
 	int dx1,dx2,dy1,dy2;
+	int mouse_x,mouse_y;
 	bool locked;
 
 	void DrawTVEffects();