diff --git a/Framework/Algorithms/test/CreateUserDefinedBackgroundTest.h b/Framework/Algorithms/test/CreateUserDefinedBackgroundTest.h
index c59567b8009b07405e86023a3a3edb9e89a0e8e8..61cb415db20b6eff761b6c4641b9dd768640a9ca 100644
--- a/Framework/Algorithms/test/CreateUserDefinedBackgroundTest.h
+++ b/Framework/Algorithms/test/CreateUserDefinedBackgroundTest.h
@@ -243,7 +243,7 @@ public:
   void test_exec_distribution() {
     // Create test input
     const auto inputWS = createTestData(true);
-    const auto bgPoints = createTable();
+    const auto bgPoints = createTable(true);
     Mantid::API::WorkspaceHelpers::makeDistribution(inputWS);
 
     CreateUserDefinedBackground alg;
@@ -262,8 +262,10 @@ public:
     TS_ASSERT(outputWS);
 
     // The expected result
-    const auto expected = createExpectedResults(true, true);
-    TS_ASSERT(workspacesEqual(expected, outputWS, 5e-2));
+    const auto expected = createExpectedResults(true, false);
+    Mantid::API::WorkspaceHelpers::makeDistribution(expected);
+
+    TS_ASSERT(workspacesEqual(expected, outputWS, 0.1, true));
   }
 
 private:
@@ -274,14 +276,15 @@ private:
   }
 
   /// Create table containing user-selected background points
-  ITableWorkspace_sptr createTable() {
+  ITableWorkspace_sptr createTable(bool isDistribution = false) {
     auto table = boost::make_shared<Mantid::DataObjects::TableWorkspace>();
     table->addColumn("double", "X");
     table->addColumn("double", "Y");
+    double width = 0.1;
     for (int i = 0; i < 100; i++) {
-      const auto x = static_cast<double>(i) / 10.0;
+      const auto x = static_cast<double>(i) * width;
       Mantid::API::TableRow row = table->appendRow();
-      row << x << background(x);
+      row << x << (isDistribution ? background(x) / width : background(x));
     }
     return table;
   }
diff --git a/Framework/HistogramData/inc/MantidHistogramData/Histogram.h b/Framework/HistogramData/inc/MantidHistogramData/Histogram.h
index a9c1f83fe5d2f5bc7f70079c08cdcdc0ceff659a..7c91f01257e895bb7e67d5ec864a31540e3317eb 100644
--- a/Framework/HistogramData/inc/MantidHistogramData/Histogram.h
+++ b/Framework/HistogramData/inc/MantidHistogramData/Histogram.h
@@ -404,7 +404,7 @@ template <typename... T> void Histogram::setFrequencies(T &&... data) & {
   checkSize(frequencies);
   if (selfAssignmentY(data...))
     return;
-  m_y = Counts(frequencies, binEdges()).cowData();
+  m_y = frequencies.cowData();
 }
 
 /// Sets the Histogram's frequency variances.
@@ -414,7 +414,7 @@ template <typename... T> void Histogram::setFrequencyVariances(T &&... data) & {
   checkSize(frequencies);
   if (selfAssignmentE(data...))
     return;
-  m_e = CountStandardDeviations(frequencies, binEdges()).cowData();
+  m_e = FrequencyStandardDeviations(std::move(frequencies)).cowData();
 }
 
 /// Sets the Histogram's frequency standard deviations.
@@ -425,7 +425,7 @@ void Histogram::setFrequencyStandardDeviations(T &&... data) & {
   checkSize(frequencies);
   if (selfAssignmentE(data...))
     return;
-  m_e = CountStandardDeviations(frequencies, binEdges()).cowData();
+  m_e = frequencies.cowData();
 }
 
 template <>
diff --git a/Framework/HistogramData/test/HistogramTest.h b/Framework/HistogramData/test/HistogramTest.h
index 86d3d052427e02e1ae21595f606236fea0178b64..b890ea5b9a9a4e239c0d2d9b8d39e36717e73097 100644
--- a/Framework/HistogramData/test/HistogramTest.h
+++ b/Framework/HistogramData/test/HistogramTest.h
@@ -620,16 +620,39 @@ public:
     TS_ASSERT_THROWS_NOTHING(h.setCountStandardDeviations(2));
   }
 
+  void test_setFrequenciesDataValid() {
+    Histogram h(BinEdges{1, 2, 3});
+    std::vector<double> freqs(2, 0.36);
+    h.setFrequencies(freqs);
+    TS_ASSERT_EQUALS(freqs, h.y().rawData());
+  }
+
   void test_setFrequencyVariances() {
     Histogram h(Points{1.0, 2.0});
     TS_ASSERT_THROWS_NOTHING(h.setFrequencyVariances(2));
   }
 
+  void test_setFrequencyVariancesDataValid() {
+    Histogram h(BinEdges{1, 2, 3});
+    std::vector<double> freqVars(2, 100);
+    std::vector<double> freqStdDevs(2, 10);
+
+    h.setFrequencyVariances(freqVars);
+    TS_ASSERT_EQUALS(freqStdDevs, h.e().rawData());
+  }
+
   void test_setFrequencyStandardDeviations() {
     Histogram h(Points{1.0, 2.0});
     TS_ASSERT_THROWS_NOTHING(h.setFrequencyStandardDeviations(2));
   }
 
+  void test_setFrequencyStandardDeviationsDataValid() {
+    Histogram h(BinEdges{1, 2, 3});
+    std::vector<double> freqStdDevs(2, 0.11);
+    h.setFrequencyStandardDeviations(freqStdDevs);
+    TS_ASSERT_EQUALS(freqStdDevs, h.e().rawData());
+  }
+
   void test_setCountVariances_size_mismatch() {
     Histogram h(Points{1.0, 2.0});
     TS_ASSERT_THROWS(h.setCountVariances(1), std::logic_error);