diff --git a/src/gui/options.js b/src/gui/options.js
index 01035bf3f3342bfd95fb9c6002981691b3b0d3f5..ce2ac0d11c8185047def6ae2d36dd40bdac643e4 100644
--- a/src/gui/options.js
+++ b/src/gui/options.js
@@ -225,7 +225,7 @@ App.UI.OptionsGroup = (function() {
 							if (value.value) {
 								Engine.play(value.value);
 							} else {
-								reload();
+								App.UI.reload();
 							}
 						};
 					} else {
@@ -253,7 +253,7 @@ App.UI.OptionsGroup = (function() {
 							if (value.callback) {
 								value.callback();
 							}
-							reload();
+							App.UI.reload();
 						};
 					}
 					buttonGroup.append(button);
@@ -262,7 +262,7 @@ App.UI.OptionsGroup = (function() {
 					const isNumber = typeof currentValue === "number";
 					const textbox = App.UI.DOM.makeTextBox(currentValue, input => {
 						option.object[option.property] = input;
-						reload();
+						App.UI.reload();
 					}, isNumber);
 					if (isNumber) {
 						textbox.classList.add("number");
@@ -283,12 +283,6 @@ App.UI.OptionsGroup = (function() {
 
 			return container;
 
-			function reload() {
-				const position = window.pageYOffset;
-				Engine.play(passage());
-				window.scrollTo(0, position);
-			}
-
 			function inRange(mode, compareValue, value) {
 				if (mode === "<") {
 					return value < compareValue;
diff --git a/src/js/utilsSC.js b/src/js/utilsSC.js
index e6931d4c235e991c3ef81ab4ca0628bfe8c04889..3c21c2f6295d1b8497131d47a186ac81fb1f8953 100644
--- a/src/js/utilsSC.js
+++ b/src/js/utilsSC.js
@@ -304,3 +304,12 @@ App.UI.slaveDescriptionDialog = function(slave) {
 App.UI.DOM.slaveDescriptionDialog = function(slave) {
 	return App.UI.DOM.link(SlaveFullName(slave), App.UI._showDescriptionDialog, [slave]);
 };
+
+/**
+ * Reloads the passage and stays at the same height.
+ */
+App.UI.reload = function() {
+	const position = window.pageYOffset;
+	Engine.play(passage());
+	window.scrollTo(0, position);
+};