diff --git a/Framework/PythonInterface/plugins/algorithms/LRScalingFactors.py b/Framework/PythonInterface/plugins/algorithms/LRScalingFactors.py
index 13a289875724a6f9ab4fd82a735d30dc1e9da5e9..17140b801b2eab7f40764635fd0e051f735d76ef 100644
--- a/Framework/PythonInterface/plugins/algorithms/LRScalingFactors.py
+++ b/Framework/PythonInterface/plugins/algorithms/LRScalingFactors.py
@@ -58,9 +58,7 @@ class LRScalingFactors(PythonAlgorithm):
                              "Pixel range defining the data peak")
         self.declareProperty(IntArrayProperty("SignalBackgroundPixelRange", [147, 163]),
                              "Pixel range defining the background")
-        self.declareProperty(IntArrayProperty("LowResolutionPixelRange", [94, 160],
-                                              IntArrayLengthValidator(2),
-                                              direction=Direction.Input),
+        self.declareProperty(IntArrayProperty("LowResolutionPixelRange", [94, 160]),
                              "Pixel range defining the region to use in the low-resolution direction")
         self.declareProperty("IncidentMedium", "Air", doc="Name of the incident medium")
         self.declareProperty("FrontSlitName", "S1", doc="Name of the front slit")
@@ -96,6 +94,7 @@ class LRScalingFactors(PythonAlgorithm):
         # Get peak ranges
         peak_range = self.getProperty("SignalPeakPixelRange").value
         background_range = self.getProperty("SignalBackgroundPixelRange").value
+        lowres_range = self.getProperty("LowResolutionPixelRange").value
 
         # Supply good values for peak ranges
         # If we supplied two values, use those boundaries for each run
@@ -119,6 +118,16 @@ class LRScalingFactors(PythonAlgorithm):
         elif len(background_range) < 2:
             raise RuntimeError("SignalBackgroundPixelRange should have a length of at least 2.")
 
+        if len(lowres_range)==2:
+            x_min = int(lowres_range[0])
+            x_max = int(lowres_range[1])
+            lowres_range = 2*len(data_runs)*[0]
+            for i in range(len(data_runs)):
+                lowres_range[2*i] = x_min
+                lowres_range[2*i+1] = x_max
+        elif len(lowres_range) < 2:
+            raise RuntimeError("LowResolutionPixelRange should have a length of at least 2.")
+
         # Check that the peak range arrays are of the proper length
         if not (len(peak_range) == 2*len(data_runs) \
                 and len(background_range) == 2*len(data_runs)):
@@ -170,9 +179,11 @@ class LRScalingFactors(PythonAlgorithm):
 
             peak = [int(peak_range[2*i]), int(peak_range[2*i+1])]
             background = [int(background_range[2*i]), int(background_range[2*i+1])]
+            low_res = [int(lowres_range[2*i]), int(lowres_range[2*i+1])]
             self.process_data(workspace,
                               peak_range=peak,
-                              background_range=background)
+                              background_range=background,
+                              low_res_range=low_res)
 
             # If we don't have the attenuator information and we have the
             # same slit settings as the previous run, it means we added an
@@ -351,12 +362,13 @@ class LRScalingFactors(PythonAlgorithm):
             fd.write("error_b=%s\n" % item["error_b"])
         fd.close()
 
-    def process_data(self, workspace, peak_range, background_range):
+    def process_data(self, workspace, peak_range, background_range, low_res_range):
         """
             Common processing for both sample data and normalization.
             @param workspace: name of the workspace to work with
             @param peak_range: range of pixels defining the peak
             @param background_range: range of pixels defining the background
+            @param low_res_range: range of pixels in the x-direction
         """
         # Rebin TOF axis
         tof_range = self.getProperty("TOFRange").value
@@ -364,16 +376,11 @@ class LRScalingFactors(PythonAlgorithm):
         workspace = Rebin(InputWorkspace=workspace, Params=[tof_range[0], tof_step, tof_range[1]],
                           PreserveEvents=False, OutputWorkspace=str(workspace))
 
-        # Integrate over low resolution range
-        low_res_range = self.getProperty("LowResolutionPixelRange").value
-        x_min = int(low_res_range[0])
-        x_max = int(low_res_range[1])
-
         # Subtract background
         workspace = LRSubtractAverageBackground(InputWorkspace=workspace,
                                                 PeakRange=peak_range,
                                                 BackgroundRange=background_range,
-                                                LowResolutionRange=[x_min, x_max],
+                                                LowResolutionRange=low_res_range,
                                                 OutputWorkspace=str(workspace))
 
         # Normalize by current proton charge