diff --git a/aegisub/src/video_context.cpp b/aegisub/src/video_context.cpp
index a0f999dcb..409c23917 100644
--- a/aegisub/src/video_context.cpp
+++ b/aegisub/src/video_context.cpp
@@ -97,6 +97,7 @@ VideoContext *VideoContext::instance = NULL;
 VideoContext::VideoContext() {
 	// Set GL context
 	glContext = NULL;
+	ownGlContext = false;
 	lastTex = 0;
 	lastFrame = -1;
 	yv12shader = 0;
@@ -130,7 +131,8 @@ VideoContext::VideoContext() {
 // Destructor
 VideoContext::~VideoContext () {
 	Reset();
-	delete glContext;
+	if (ownGlContext)
+		delete glContext;
 	glContext = NULL;
 }
 
@@ -483,10 +485,16 @@ wxGLContext *VideoContext::GetGLContext(wxGLCanvas *canvas) {
 	// Also see bug #850.
 #if wxCHECK_VERSION(2,9,0)
 #else
-	if (!glContext) glContext = canvas->GetContext();
+	if (!glContext) {
+		glContext = canvas->GetContext();
+		ownGlContext = false;
+	}
 #endif
 #ifndef __WXMAC__
-	if (!glContext) glContext = new wxGLContext(canvas);
+	if (!glContext) {
+		glContext = new wxGLContext(canvas);
+		ownGlContext = true;
+	}
 #endif
 	return glContext;
 }
diff --git a/aegisub/src/video_context.h b/aegisub/src/video_context.h
index ba34a1850..d2c3ec4ad 100644
--- a/aegisub/src/video_context.h
+++ b/aegisub/src/video_context.h
@@ -85,6 +85,7 @@ private:
 	GLuint lastTex;
 	GLhandleARB yv12shader;
 	int lastFrame;
+	bool ownGlContext;
 	wxGLContext *glContext;
 	VideoFrameFormat vidFormat;
 	AegiVideoFrame tempFrame;