diff --git a/Framework/API/inc/MantidAPI/IMDWorkspace.h b/Framework/API/inc/MantidAPI/IMDWorkspace.h
index af93bc889e0864a92fe9137d51b8e4b35c721ef9..634291648bc22b778baa70cdae40a184cf0d5c62 100644
--- a/Framework/API/inc/MantidAPI/IMDWorkspace.h
+++ b/Framework/API/inc/MantidAPI/IMDWorkspace.h
@@ -159,6 +159,9 @@ protected:
 
   virtual const std::string toString() const;
 
+  // Value to be used for masked data in plots of MDWorkspaces
+  static const signal_t m_maskValue;
+
 private:
   virtual IMDWorkspace *doClone() const = 0;
 };
diff --git a/Framework/API/src/IMDWorkspace.cpp b/Framework/API/src/IMDWorkspace.cpp
index 944da88b66a6a7468da5d5db654e988bfeb5565e..4a7e5d76de0127e2c9db30d544c2109901cd412b 100644
--- a/Framework/API/src/IMDWorkspace.cpp
+++ b/Framework/API/src/IMDWorkspace.cpp
@@ -21,6 +21,9 @@ IMDWorkspace::IMDWorkspace(const IMDWorkspace &other)
 /// Destructor
 IMDWorkspace::~IMDWorkspace() {}
 
+// Value to be used for masked data in plots of MDWorkspaces
+const signal_t IMDWorkspace::m_maskValue = 0.0;
+
 /** Creates a single iterator and returns it.
  *
  * This calls createIterators(), a pure virtual method on IMDWorkspace which
diff --git a/Framework/DataObjects/inc/MantidDataObjects/MDEventWorkspace.tcc b/Framework/DataObjects/inc/MantidDataObjects/MDEventWorkspace.tcc
index 5fb70309e189c45488a7be0cc3158a7b663d8f9d..848e7d3153ed513079ab6151ebff8813caefd612 100644
--- a/Framework/DataObjects/inc/MantidDataObjects/MDEventWorkspace.tcc
+++ b/Framework/DataObjects/inc/MantidDataObjects/MDEventWorkspace.tcc
@@ -326,7 +326,7 @@ TMDE(signal_t MDEventWorkspace)::getSignalWithMaskAtCoord(
   // Check if masked
   const API::IMDNode *box = data->getBoxAtCoord(coords);
   if (box->getIsMasked()) {
-    return 0.0;
+    return m_maskValue;
   }
   return getNormalizedSignal(box, normalization);
 }
@@ -765,8 +765,8 @@ TMDE(void MDEventWorkspace)::getLinePlot(const Mantid::Kernel::VMD &start,
 
       if (box != NULL) {
         if (box->getIsMasked()) {
-          y.push_back(0.0);
-          e.push_back(0.0);
+          y.push_back(m_maskValue);
+          e.push_back(m_maskValue);
         } else {
           // What is our normalization factor?
           signal_t normalizer = 1.0;
diff --git a/Framework/DataObjects/src/MDHistoWorkspace.cpp b/Framework/DataObjects/src/MDHistoWorkspace.cpp
index ed779c82343652154ebe53224b509f45419173a8..1661d82936d0776883469c53bab64d51044c4fff 100644
--- a/Framework/DataObjects/src/MDHistoWorkspace.cpp
+++ b/Framework/DataObjects/src/MDHistoWorkspace.cpp
@@ -389,7 +389,7 @@ signal_t MDHistoWorkspace::getSignalWithMaskAtCoord(
     const Mantid::API::MDNormalization &normalization) const {
   size_t linearIndex = this->getLinearIndexAtCoord(coords);
   if (this->getIsMaskedAt(linearIndex)) {
-    return 0.0;
+    return m_maskValue;
   }
   return getSignalAtCoord(coords, normalization);
 }
@@ -586,8 +586,8 @@ void MDHistoWorkspace::getLinePlot(const Mantid::Kernel::VMD &start,
 
         // Is the signal here masked?
         if (this->getIsMaskedAt(linearIndex)) {
-          y.push_back(0.0);
-          e.push_back(0.0);
+          y.push_back(m_maskValue);
+          e.push_back(m_maskValue);
         } else {
           signal_t normalizer = getNormalizationFactor(normalize, linearIndex);
           // And add the normalized signal/error to the list too