diff --git a/aegisub/src/audio_box.cpp b/aegisub/src/audio_box.cpp
index 5922a0ea41019920d9d8a27a90142b3f1de88c4a..5809cb740177a7d7876b79d27b7f7c318b2f82eb 100644
--- a/aegisub/src/audio_box.cpp
+++ b/aegisub/src/audio_box.cpp
@@ -155,8 +155,7 @@ void AudioBox::OnMouseWheel(wxMouseEvent &evt) {
 		return;
 
 	bool zoom = evt.CmdDown() != OPT_GET("Audio/Wheel Default to Zoom")->GetBool();
-	if (!zoom)
-	{
+	if (!zoom) {
 		int amount = -evt.GetWheelRotation() * GetClientSize().GetWidth() / (evt.GetWheelDelta() * 3);
 
 		// If the user did a horizontal scroll the amount should be inverted
@@ -171,15 +170,11 @@ void AudioBox::OnMouseWheel(wxMouseEvent &evt) {
 
 		audioDisplay->ScrollBy(amount);
 	}
-	else if (evt.GetWheelAxis() == 0)
-	{
+	else if (evt.GetWheelAxis() == 0) {
 		mouse_zoom_accum += evt.GetWheelRotation();
 		int zoom_delta = mouse_zoom_accum / evt.GetWheelDelta();
 		mouse_zoom_accum %= evt.GetWheelDelta();
-		int new_zoom = audioDisplay->GetZoomLevel() + zoom_delta;
-		audioDisplay->SetZoomLevel(new_zoom);
-		HorizontalZoom->SetValue(-new_zoom);
-		OPT_SET("Audio/Zoom/Horizontal")->SetInt(new_zoom);
+		SetHorizontalZoom(audioDisplay->GetZoomLevel() + zoom_delta);
 	}
 }
 
@@ -201,10 +196,15 @@ void AudioBox::OnSashDrag(wxSashEvent &event) {
 }
 
 void AudioBox::OnHorizontalZoom(wxScrollEvent &event) {
-	// Negate the value, we want zoom out to be on bottom and zoom in on top,
+	// Negate the value since we want zoom out to be on bottom and zoom in on top,
 	// but the control doesn't want negative on bottom and positive on top.
-	audioDisplay->SetZoomLevel(-event.GetPosition());
-	OPT_SET("Audio/Zoom/Horizontal")->SetInt(event.GetPosition());
+	SetHorizontalZoom(-event.GetPosition());
+}
+
+void AudioBox::SetHorizontalZoom(int new_zoom) {
+	audioDisplay->SetZoomLevel(new_zoom);
+	HorizontalZoom->SetValue(-new_zoom);
+	OPT_SET("Audio/Zoom/Horizontal")->SetInt(new_zoom);
 }
 
 void AudioBox::OnVerticalZoom(wxScrollEvent &event) {
diff --git a/aegisub/src/audio_box.h b/aegisub/src/audio_box.h
index 669a6e7463e7900724cd650b6b4603e2087e124f..e7584965cbc584db5e196566a86d3d5082ebacc6 100644
--- a/aegisub/src/audio_box.h
+++ b/aegisub/src/audio_box.h
@@ -85,6 +85,7 @@ class AudioBox : public wxSashWindow {
 	// Mouse wheel zoom accumulator
 	int mouse_zoom_accum;
 
+	void SetHorizontalZoom(int new_zoom);
 	void OnAudioOpen();
 	void OnHorizontalZoom(wxScrollEvent &event);
 	void OnMouseWheel(wxMouseEvent &evt);