diff --git a/Framework/Algorithms/src/Stitch1D.cpp b/Framework/Algorithms/src/Stitch1D.cpp
index 10416dce15f41b2cc06c60287b2454185ac9cf57..997aa0e6919a859be1ac37381725c91060cd9d38 100644
--- a/Framework/Algorithms/src/Stitch1D.cpp
+++ b/Framework/Algorithms/src/Stitch1D.cpp
@@ -55,7 +55,6 @@ DECLARE_ALGORITHM(Stitch1D)
  * @param a1 : Zero based bin index (first one)
  * @param a2 : Zero based bin index (last one inclusive)
  * @param source : Workspace providing the source data.
- * @return Masked workspace.
  */
 MatrixWorkspace_sptr Stitch1D::maskAllBut(int a1, int a2,
                                           MatrixWorkspace_sptr &source) {
@@ -585,8 +584,8 @@ void Stitch1D::exec() {
 
   const bool scaleRHS = this->getProperty("ScaleRHSWorkspace");
 
-  MatrixWorkspace_sptr lhs = boost::const_pointer_cast<MatrixWorkspace>(lhsWS);
-  MatrixWorkspace_sptr rhs = boost::const_pointer_cast<MatrixWorkspace>(rhsWS);
+  MatrixWorkspace_sptr lhs = lhsWS->clone();
+  MatrixWorkspace_sptr rhs = rhsWS->clone();
   if (lhsWS->isHistogramData()) {
     MantidVec params = getRebinParams(lhsWS, rhsWS, scaleRHS);
     const double &xMin = params.front();
diff --git a/Framework/Algorithms/test/Stitch1DTest.h b/Framework/Algorithms/test/Stitch1DTest.h
index cd1b2a6dce1f5ab280d58da1f48ade7f35ce49cc..6ac02c265288488bdff81255b4dc2bf2dcbf3bda 100644
--- a/Framework/Algorithms/test/Stitch1DTest.h
+++ b/Framework/Algorithms/test/Stitch1DTest.h
@@ -249,12 +249,12 @@ public:
     const auto &x1 = HistogramX(3, LinearGenerator(1., 1.));
     const auto &y1 = HistogramY(3, LinearGenerator(1., 1.));
     const auto &e = HistogramE(3, LinearGenerator(7., -1.));
-    const auto &dx1 = HistogramDx(3, LinearGenerator(-3., 1.));
+    const auto &dx1 = HistogramDx(3, LinearGenerator(3., -1.));
     auto point_ws_1 = createWorkspace(x1, y1, e, dx1);
 
     const auto &x2 = HistogramX(3, LinearGenerator(2.1, 1.));
     const auto &y2 = HistogramY(3, LinearGenerator(5., 1.));
-    const auto &dx2 = HistogramDx(3, LinearGenerator(-9., 0.));
+    const auto &dx2 = HistogramDx(3, LinearGenerator(9., 0.));
     auto point_ws_2 = createWorkspace(x2, y2, e, dx2);
 
     Stitch1D alg;
@@ -274,7 +274,7 @@ public:
     TS_ASSERT_EQUALS(stitched->y(0).rawData(), y_values);
     const std::vector<double> e_values{7., 6., 7., 5., 6., 5.};
     TS_ASSERT_EQUALS(stitched->e(0).rawData(), e_values);
-    const std::vector<double> dx_values{-3., -2., -9., -1., -9., -9.};
+    const std::vector<double> dx_values{3., 2., 9., 1., 9., 9.};
     TS_ASSERT_EQUALS(stitched->dx(0).rawData(), dx_values);
     double scaleFactor = alg.getProperty("OutScaleFactor");
     TS_ASSERT_EQUALS(scaleFactor, 1.); // Default scale factor
@@ -284,20 +284,15 @@ public:
     const auto &x1 = HistogramX(3, LinearGenerator(1., 1.));
     const auto &y1 = HistogramY(3, LinearGenerator(1., 1.));
     const auto &e = HistogramE(3, LinearGenerator(7., -1.));
-    const auto &dx1 = HistogramDx(3, LinearGenerator(-3., 1.));
+    const auto &dx1 = HistogramDx(3, LinearGenerator(3., -1.));
     auto ws1 = createWorkspace(x1, y1, e, dx1);
-
-    const auto &x2 = HistogramX(3, LinearGenerator(2.1, 1.));
-    const auto &y2 = HistogramY(3, LinearGenerator(5., 1.));
-    const auto &dx2 = HistogramDx(3, LinearGenerator(-9., 0.));
-    auto ws2 = createWorkspace(x2, y2, e, dx2);
-
+    auto ws2 = ws1;
     Stitch1D alg;
     alg.setChild(true);
     alg.setRethrows(true);
     alg.initialize();
     alg.setProperty("LHSWorkspace", ws1);
-    alg.setProperty("RHSWorkspace", ws2);
+    alg.setProperty("RHSWorkspace", ws1);
     alg.setProperty("UseManualScaleFactor", true);
     alg.setPropertyValue("OutputWorkspace", "dummy_value");
     alg.execute();
@@ -316,12 +311,12 @@ public:
     const auto &x1 = HistogramX(3, LinearGenerator(1., 1.));
     const auto &y1 = HistogramY(3, LinearGenerator(1., 1.));
     const auto &e = HistogramE(3, 1.);
-    const auto &dx1 = HistogramDx(3, LinearGenerator(-3., 1.));
+    const auto &dx1 = HistogramDx(3, LinearGenerator(3., -1.));
     auto point_ws_1 = createWorkspace(x1, y1, e, dx1);
 
     const auto &x2 = HistogramX(3, LinearGenerator(1.5, 1.));
     const auto &y2 = HistogramY(3, LinearGenerator(5., 1.));
-    const auto &dx2 = HistogramDx(3, LinearGenerator(-9., 0.));
+    const auto &dx2 = HistogramDx(3, LinearGenerator(9., 0.));
     auto point_ws_2 = createWorkspace(x2, y2, e, dx2);
 
     Stitch1D alg;
@@ -366,15 +361,22 @@ public:
     const auto &x = HistogramX(3, LinearGenerator(-1.2, 0.2));
     const auto &y = HistogramY(2, LinearGenerator(1., 1.0));
     const auto &e = HistogramE(2, 1.);
-    const auto &dx = HistogramDx(2, LinearGenerator(-3., 0.1));
+    const auto &dx = HistogramDx(2, LinearGenerator(3., 0.1));
     auto ws2 = createWorkspace(x, y, e, dx);
+    auto ws3 = ws1;
+    auto ws4 = ws2;
     TSM_ASSERT_THROWS_NOTHING("Histogram workspaces should pass",
                               do_stitch1D(ws2, ws1));
     Mantid::Algorithms::CompareWorkspaces compare;
     compare.initialize();
     compare.setRethrows(true);
     TS_ASSERT_THROWS_NOTHING(compare.setProperty("Workspace1", ws1));
-    TS_ASSERT_THROWS_NOTHING(compare.setProperty("Workspace2", ws2));
+    TS_ASSERT_THROWS_NOTHING(compare.setProperty("Workspace2", ws3));
+    TS_ASSERT(compare.execute());
+    TS_ASSERT(compare.isExecuted());
+    TS_ASSERT_EQUALS(compare.getPropertyValue("Result"), "1");
+    TS_ASSERT_THROWS_NOTHING(compare.setProperty("Workspace1", ws2));
+    TS_ASSERT_THROWS_NOTHING(compare.setProperty("Workspace2", ws4));
     TS_ASSERT(compare.execute());
     TS_ASSERT(compare.isExecuted());
     TS_ASSERT_EQUALS(compare.getPropertyValue("Result"), "1");