diff --git a/Code/Mantid/Framework/API/src/MatrixWorkspace.cpp b/Code/Mantid/Framework/API/src/MatrixWorkspace.cpp
index e59421d5920c9cb01579e6667abdcc1f4b1e08d3..38d30cb37e2abfd2e9899be51fb103d5a6d745dd 100644
--- a/Code/Mantid/Framework/API/src/MatrixWorkspace.cpp
+++ b/Code/Mantid/Framework/API/src/MatrixWorkspace.cpp
@@ -1555,9 +1555,14 @@ signal_t MatrixWorkspace::getSignalAtCoord(
         switch (normalization) {
         case NoNormalization:
           return y;
-        case VolumeNormalization:
+        case VolumeNormalization: {
           // Divide the signal by the area
-          return y / (yBinSize * (X[i] - X[i - 1]));
+          auto volume = yBinSize * (X[i] - X[i - 1]);
+          if (volume == 0.0) {
+            return std::numeric_limits<double>::quiet_NaN();
+          }
+          return y / volume;
+        }
         case NumEventsNormalization:
           // Not yet implemented, may not make sense
           return y;
diff --git a/Code/Mantid/MantidQt/API/src/MantidQwtIMDWorkspaceData.cpp b/Code/Mantid/MantidQt/API/src/MantidQwtIMDWorkspaceData.cpp
index 1212cf2cb5fab46b2bdc95e6adf562b5ae86d28f..d1a16749ee6fbd9c7aa268cdc72a4031d9d4c660 100644
--- a/Code/Mantid/MantidQt/API/src/MantidQwtIMDWorkspaceData.cpp
+++ b/Code/Mantid/MantidQt/API/src/MantidQwtIMDWorkspaceData.cpp
@@ -87,7 +87,11 @@ MantidQwtIMDWorkspaceData::MantidQwtIMDWorkspaceData(Mantid::API::IMDWorkspace_c
   }
   // Unit direction of the line
   m_dir = m_end - m_start;
-  m_dir.normalize();
+  if (m_end != m_start) {
+    m_dir.normalize();
+  } else {
+    m_dir[0] = 1.0;
+  }
   // And cache the X/Y values
   this->cacheLinePlot();
 }