diff --git a/Framework/Algorithms/src/Minus.cpp b/Framework/Algorithms/src/Minus.cpp
index eedd17795ad35882b9d1edaee8ba37fb52204201..08319d1e2e88f92419f51f5d1734cdc1041afcfe 100644
--- a/Framework/Algorithms/src/Minus.cpp
+++ b/Framework/Algorithms/src/Minus.cpp
@@ -22,7 +22,7 @@ void Minus::performBinaryOperation(const HistogramData::Histogram &lhs,
                                    HistogramData::HistogramY &YOut,
                                    HistogramData::HistogramE &EOut) {
   std::transform(lhs.y().begin(), lhs.y().end(), rhs.y().begin(), YOut.begin(),
-                 std::minus<double>());
+                 std::minus<>());
   std::transform(lhs.e().begin(), lhs.e().end(), rhs.e().begin(), EOut.begin(),
                  VectorHelper::SumGaussError<double>());
 }
@@ -33,12 +33,13 @@ void Minus::performBinaryOperation(const HistogramData::Histogram &lhs,
                                    HistogramData::HistogramE &EOut) {
   using std::placeholders::_1;
   std::transform(lhs.y().begin(), lhs.y().end(), YOut.begin(),
-                 std::bind(std::minus<double>(), _1, rhsY));
+                 [rhsY](double l) { return l - rhsY; });
   // Only do E if non-zero, otherwise just copy
-  if (rhsE != 0)
+  if (rhsE != 0) {
+    double rhsE2 = rhsE * rhsE;
     std::transform(lhs.e().begin(), lhs.e().end(), EOut.begin(),
-                   std::bind(VectorHelper::SumGaussError<double>(), _1, rhsE));
-  else
+                   [rhsE2](double l) { return std::sqrt(l * l + rhsE2); });
+  } else
     EOut = lhs.e();
 }
 
diff --git a/Framework/Algorithms/src/Plus.cpp b/Framework/Algorithms/src/Plus.cpp
index 830f03c98b20e130d9b4f10f2ec1adfc7adcaa8d..b23ee7b1397d7275496bb7094e3d4f742081204b 100644
--- a/Framework/Algorithms/src/Plus.cpp
+++ b/Framework/Algorithms/src/Plus.cpp
@@ -24,7 +24,7 @@ void Plus::performBinaryOperation(const HistogramData::Histogram &lhs,
                                   HistogramData::HistogramY &YOut,
                                   HistogramData::HistogramE &EOut) {
   std::transform(lhs.y().begin(), lhs.y().end(), rhs.y().begin(), YOut.begin(),
-                 std::plus<double>());
+                 std::plus<>());
   std::transform(lhs.e().begin(), lhs.e().end(), rhs.e().begin(), EOut.begin(),
                  VectorHelper::SumGaussError<double>());
 }
@@ -36,12 +36,14 @@ void Plus::performBinaryOperation(const HistogramData::Histogram &lhs,
                                   HistogramData::HistogramE &EOut) {
   using std::placeholders::_1;
   std::transform(lhs.y().begin(), lhs.y().end(), YOut.begin(),
-                 std::bind(std::plus<double>(), _1, rhsY));
+                 [rhsY](double l) { return l + rhsY; });
   // Only do E if non-zero, otherwise just copy
-  if (rhsE != 0)
+
+  if (rhsE != 0.) {
+    double rhsE2 = rhsE * rhsE;
     std::transform(lhs.e().begin(), lhs.e().end(), EOut.begin(),
-                   std::bind(VectorHelper::SumGaussError<double>(), _1, rhsE));
-  else
+                   [rhsE2](double l) { return std::sqrt(l * l + rhsE2); });
+  } else
     EOut = lhs.e();
 }