diff --git a/scripts/Engineering/gui/engineering_diffraction/settings/settings_helper.py b/scripts/Engineering/gui/engineering_diffraction/settings/settings_helper.py
index 665f298256529818ed7245c559ae71f52cf107a7..020ad2f3032f2d82b3f6a86b7c7bea913d9ca0b4 100644
--- a/scripts/Engineering/gui/engineering_diffraction/settings/settings_helper.py
+++ b/scripts/Engineering/gui/engineering_diffraction/settings/settings_helper.py
@@ -11,6 +11,13 @@ from qtpy.QtCore import QSettings
 
 
 def set_setting(group, prefix, setting_name, value):
+    """
+    Change or add a setting in the mantid .ini file.
+    :param group: Settings group to pull from.
+    :param prefix: Acts like a subgroup.
+    :param setting_name: The key to the setting.
+    :param value: The value of the setting.
+    """
     settings = QSettings()
     settings.beginGroup(group)
     settings.setValue(prefix + setting_name, value)
@@ -18,8 +25,33 @@ def set_setting(group, prefix, setting_name, value):
 
 
 def get_setting(group, prefix, setting_name, return_type=str):
+    """
+    Get a setting from the .ini file of mantid settings.
+
+    NOTE: If you specify an int, but the setting contains a bool, you will get 0 for False
+    and 1 for True, without a warning. Specifying bool will raise a TypeError if anything
+    other than a bool or empty string is found in the settings. Not specifying a type will
+    return a string. If nothing is found then an empty string is returned.
+
+    :param group: Settings group to pull from.
+    :param prefix: The prefix of the setting, acts like a subgroup.
+    :param setting_name: Name of the setting.
+    :param return_type: The type of the setting to get.
+    :return: The chosen setting.
+    """
     settings = QSettings()
     settings.beginGroup(group)
-    setting = settings.value(prefix + setting_name, type=return_type)
+    if return_type is bool:
+        setting = settings.value(prefix + setting_name, type=str)
+        if setting == "":
+            pass
+        elif setting == "true":
+            setting = True
+        elif setting == "false":
+            setting = False
+        else:
+            raise TypeError("Unable to convert string into valid bool")
+    else:
+        setting = settings.value(prefix + setting_name, type=return_type)
     settings.endGroup()
     return setting
diff --git a/scripts/Engineering/gui/engineering_diffraction/settings/test/test_settings_helper.py b/scripts/Engineering/gui/engineering_diffraction/settings/test/test_settings_helper.py
index 51530f1705d7bddd87b0c846863a29d96fb777f2..62a0bf0d145ed963a25d27d06295258523df9bc9 100644
--- a/scripts/Engineering/gui/engineering_diffraction/settings/test/test_settings_helper.py
+++ b/scripts/Engineering/gui/engineering_diffraction/settings/test/test_settings_helper.py
@@ -107,6 +107,54 @@ class SettingsHelperTest(unittest.TestCase):
     def test_get_setting_with_invalid(self):
         self.assertEqual(get_setting(GROUP, PREFIX, "something"), "")
 
+    def test_get_setting_int_without_specifying_type(self):
+        settings = QSettings()
+        settings.beginGroup(GROUP)
+        settings.setValue(PREFIX + "something", 10)
+        settings.endGroup()
+
+        self.assertEqual(get_setting(GROUP, PREFIX, "something"), "10")
+
+    def test_get_setting_bool_without_specifying_type(self):
+        settings = QSettings()
+        settings.beginGroup(GROUP)
+        settings.setValue(PREFIX + "something", True)
+        settings.endGroup()
+
+        self.assertEqual(get_setting(GROUP, PREFIX, "something"), "true")
+
+    def test_get_setting_bool_specifying_int(self):
+        settings = QSettings()
+        settings.beginGroup(GROUP)
+        settings.setValue(PREFIX + "something", True)
+        settings.endGroup()
+
+        self.assertEqual(get_setting(GROUP, PREFIX, "something", return_type=int), 1)
+
+    def test_get_setting_int_specifying_bool(self):
+        settings = QSettings()
+        settings.beginGroup(GROUP)
+        settings.setValue(PREFIX + "something", 10)
+        settings.endGroup()
+
+        self.assertRaises(TypeError, get_setting, GROUP, PREFIX, "something", return_type=bool)
+
+    def test_get_setting_string_specifying_int(self):
+        settings = QSettings()
+        settings.beginGroup(GROUP)
+        settings.setValue(PREFIX + "something", "some setting")
+        settings.endGroup()
+
+        self.assertRaises(TypeError, get_setting, GROUP, PREFIX, "something", return_type=int)
+
+    def test_get_setting_string_specifying_bool(self):
+        settings = QSettings()
+        settings.beginGroup(GROUP)
+        settings.setValue(PREFIX + "something", "a")
+        settings.endGroup()
+
+        self.assertRaises(TypeError, get_setting, GROUP, PREFIX, "something", return_type=bool)
+
 
 if __name__ == '__main__':
     unittest.main()