diff --git a/aegisub/src/video_display.cpp b/aegisub/src/video_display.cpp
index 2941c8d87146f81c74b2bf6000ca497aabf57c17..fee55d9897ec0b82ac32235d3e13267e6a34fcb4 100644
--- a/aegisub/src/video_display.cpp
+++ b/aegisub/src/video_display.cpp
@@ -115,6 +115,8 @@ VideoDisplay::VideoDisplay(
 	slots.push_back(con->videoController->AddVideoOpenListener(&VideoDisplay::UpdateSize, this));
 	slots.push_back(con->videoController->AddARChangeListener(&VideoDisplay::UpdateSize, this));
 
+	slots.push_back(con->ass->AddFileSaveListener(&VideoDisplay::OnSubtitlesSave, this));
+
 	Bind(wxEVT_PAINT, std::tr1::bind(&VideoDisplay::Render, this));
 	Bind(wxEVT_SIZE, &VideoDisplay::OnSizeEvent, this);
 	Bind(wxEVT_CONTEXT_MENU, &VideoDisplay::OnContextMenu, this);
@@ -427,3 +429,7 @@ void VideoDisplay::Unload() {
 	videoOut.reset();
 	tool.reset();
 }
+
+void VideoDisplay::OnSubtitlesSave() {
+	con->ass->SetScriptInfo("Video Zoom Percent", wxString::Format("%g", zoomValue));
+}
diff --git a/aegisub/src/video_display.h b/aegisub/src/video_display.h
index 05b032a491d2a3076f5ca7ce14542183fbf323b4..076bd2261cc1113570ce34c07b2262398dfe8c9d 100644
--- a/aegisub/src/video_display.h
+++ b/aegisub/src/video_display.h
@@ -144,6 +144,8 @@ class VideoDisplay : public wxGLCanvas {
 	void OnSizeEvent(wxSizeEvent &event);
 	void OnContextMenu(wxContextMenuEvent&);
 
+	void OnSubtitlesSave();
+
 public:
 	/// @brief Constructor
 	VideoDisplay(