diff --git a/Code/Mantid/MantidQt/CustomInterfaces/src/DataComparison.cpp b/Code/Mantid/MantidQt/CustomInterfaces/src/DataComparison.cpp
index bcac060930fbe14dbf2f219a34d42ac2069798f6..3dead66967baab847b2ef3b0dfa431e38055cd7f 100644
--- a/Code/Mantid/MantidQt/CustomInterfaces/src/DataComparison.cpp
+++ b/Code/Mantid/MantidQt/CustomInterfaces/src/DataComparison.cpp
@@ -384,11 +384,22 @@ void DataComparison::plotDiffWorkspace()
   for(int row = 0; row < numRows; row++)
   {
     QString workspaceName = m_uiForm.twCurrentData->item(row, WORKSPACE_NAME)->text();
+    QString currentSpecName = m_uiForm.twCurrentData->item(row, CURRENT_SPEC)->text();
+    bool ok;
 
     if(workspaceName == m_diffWorkspaceNames.first)
-      ws1Spec = m_uiForm.twCurrentData->item(row, CURRENT_SPEC)->text().toInt();
+      ws1Spec = currentSpecName.toInt(&ok);
     if(workspaceName == m_diffWorkspaceNames.second)
-      ws2Spec = m_uiForm.twCurrentData->item(row, CURRENT_SPEC)->text().toInt();
+      ws2Spec = currentSpecName.toInt(&ok);
+
+    // Check that the spectra are not out of range
+    if(!ok)
+    {
+      // Set info message
+      QString infoMessage = workspaceName + ": Index out of range.";
+      m_uiForm.lbDiffInfo->setText(infoMessage);
+      return;
+    }
   }
 
   // Extract the current spectrum for both workspaces
diff --git a/Code/Mantid/docs/source/interfaces/DataComparison.rst b/Code/Mantid/docs/source/interfaces/DataComparison.rst
new file mode 100644
index 0000000000000000000000000000000000000000..d969072ab5518bcea3fdf0f5ade5e68bb1d4c2aa
--- /dev/null
+++ b/Code/Mantid/docs/source/interfaces/DataComparison.rst
@@ -0,0 +1,76 @@
+Data Comparison
+===============
+
+.. contents:: Table of Contents
+  :local:
+
+Overview
+--------
+
+.. interface:: Data Comparison
+  :align: right
+
+The data comparison interface provides a method of comparing the spectra of
+multiple :ref:`MatrixWorkspace <MatrixWorkspace>` (either pre loaded into
+Mantid or loaded via the interface its self) using a preview plot.
+
+Add Data
+--------
+
+.. interface:: Data Comparison
+  :widget: gbAddData
+  :align: right
+
+This allows new data to be added to the comparison, this can be added by either
+selecting a :ref:`MatrixWorkspace <MatrixWorkspace>` alrady loaded into Mantid
+or by selecting a file to load.
+
+Once the data has been selected the *Add Data* button can be used to add it to
+the comparison, this will add a curve to the preview plot and assign it the next
+unused colour for the curve (if all are in use then black will be used).
+
+Data Table
+----------
+
+.. interface:: Data Comparison
+  :widget: gbCurrentData
+  :align: right
+
+The data table shows a list of the current data shown on the plot including the
+workspace name and currently plotted spectrum index. This also allows the curve
+colour to be changed manually.
+
+This also allows a spectrum index offset to be set on a per workspace basis,
+this allows workspaces to be aligned relative to each other in the venet that
+the spectra that you want to compare do not have the same spectrum index in each
+workspace.
+
+The value of the offset for a workspace defines the spectrum index that the
+first spectum will line up to relative to the spectrum selection spin box. At
+least one offset value must be zero (this is set check for automatically after
+an offset value has been changed).
+
+Diff
+----
+
+.. interface:: Data Comparison
+  :widget: gbDiff
+  :align: right
+
+A diff spectra of two workspaces can be created by selecting two workspaces in
+the data table (by holding Ctrl whilst making a selection) and clicking the *Diff
+Selected* button, this will subtract the current spectra for the second workspace
+selected from the current spectra for the first spectra selected and plot the
+result spectra as a green curve on the plot.
+
+If either of the diff workspaces are removed then the diff will be cleared. If
+one of the workspaces can no longer be displayed as it is offset from the other
+workspace then a messsage will be displayed in the diff tool and no plot will be
+shown, however the diff will continue to function once both workspaces can be
+displayed again.
+
+The diff workspace is created by running :ref:`ExtractSignleSpectrum
+<algm-ExtractSingleSpectrum>` on the two data workspaces and then using
+:ref:`Minus <algm-Minus>` to calculate the difference.
+
+.. categories:: Interfaces General