diff --git a/qt/scientific_interfaces/ISISReflectometry/Reduction/ParseReflectometryStrings.cpp b/qt/scientific_interfaces/ISISReflectometry/Reduction/ParseReflectometryStrings.cpp
index 3ad0a93c5b93f8bf4905833f1d76b287ec7244be..00e1775e63f6e95b208b99608d28f36ed48eab5f 100644
--- a/qt/scientific_interfaces/ISISReflectometry/Reduction/ParseReflectometryStrings.cpp
+++ b/qt/scientific_interfaces/ISISReflectometry/Reduction/ParseReflectometryStrings.cpp
@@ -100,11 +100,11 @@ boost::optional<boost::optional<double>>
 parseScaleFactor(std::string const &scaleFactor) {
   if (isEntirelyWhitespace(scaleFactor)) {
     return boost::optional<double>(boost::none);
-  } else {
-    auto value = parseDouble(scaleFactor);
-    if (value.is_initialized())
-      return value;
   }
+
+  auto value = parseDouble(scaleFactor);
+  if (value.is_initialized() && value != 0.0)
+    return value;
   return boost::none;
 }
 
diff --git a/qt/scientific_interfaces/ISISReflectometry/Reduction/ValidateRow.cpp b/qt/scientific_interfaces/ISISReflectometry/Reduction/ValidateRow.cpp
index b473c1522dc0416a162f8962737ef04f41c6d635..8fad42654867cd5132b767eb1f869a3990352b60 100644
--- a/qt/scientific_interfaces/ISISReflectometry/Reduction/ValidateRow.cpp
+++ b/qt/scientific_interfaces/ISISReflectometry/Reduction/ValidateRow.cpp
@@ -102,6 +102,7 @@ RowValidator::parseScaleFactor(std::vector<std::string> const &cellText) {
           cellText[SCALE_COLUMN]);
   if (!optionalScaleFactorOrNoneIfError.is_initialized())
     m_invalidColumns.emplace_back(SCALE_COLUMN);
+
   return optionalScaleFactorOrNoneIfError;
 }
 
diff --git a/qt/scientific_interfaces/test/ISISReflectometry/Reduction/ParseReflectometryStringsTest.h b/qt/scientific_interfaces/test/ISISReflectometry/Reduction/ParseReflectometryStringsTest.h
index 9237650cd33afb728631d8e322798c5c775c494c..e6d944aa1f90a3bab74a710927fb8cdfe3007ab5 100644
--- a/qt/scientific_interfaces/test/ISISReflectometry/Reduction/ParseReflectometryStringsTest.h
+++ b/qt/scientific_interfaces/test/ISISReflectometry/Reduction/ParseReflectometryStringsTest.h
@@ -140,6 +140,17 @@ public:
     TS_ASSERT(!result.is_initialized());
   }
 
+  void testParseScaleFactorRejectsZero() {
+    auto result = parseScaleFactor("0.0");
+    TS_ASSERT(!result.is_initialized());
+  }
+
+  void testParseScaleFactorNegative() {
+    auto result = parseScaleFactor("-1.0");
+    TS_ASSERT(result.get().is_initialized());
+    TS_ASSERT_EQUALS(result.get().get(), -1.0);
+  }
+
   void testParseQRange() {
     auto result = parseQRange("0.05", "0.16", "0.02");
     TS_ASSERT_EQUALS(result.which(), VALUE);