Index: src/sas/sasgui/perspectives/calculator/data_operator.py
===================================================================
--- src/sas/sasgui/perspectives/calculator/data_operator.py	(revision 0e760e9190d1a156409589ee9c50372130d80dbe)
+++ src/sas/sasgui/perspectives/calculator/data_operator.py	(revision 61780e3355265f8377c4d588db7b820d2c9989a7)
@@ -397,5 +397,5 @@
             self._set_textctrl_color(self.data1_cbox, 'pink')
             self._set_textctrl_color(self.data2_cbox, 'pink')
-            msg = "DataOperation: Data types must be same."
+            msg = "DataOperation: %s" % sys.exc_value
             self.send_warnings(msg, 'error')
             self.output = None
Index: src/sas/sasgui/perspectives/fitting/fitting.py
===================================================================
--- src/sas/sasgui/perspectives/fitting/fitting.py	(revision e89aed5c946bf39b3cb963b0c7805341c30d2432)
+++ src/sas/sasgui/perspectives/fitting/fitting.py	(revision 286c7571e8019b4c28a92d3d497cac7da825076c)
@@ -1742,8 +1742,9 @@
                                       data_id=str(page_id) + " " + data.name + " unsmeared")
 
-                self.create_theory_1D(x, unsmeared_data, page_id, model, data, state,
-                                      data_description="Data unsmeared",
-                                      data_id="Data  " + data.name + " unsmeared",
-                                      dy=unsmeared_error)
+                if unsmeared_data is not None and unsmeared_error is not None:
+                    self.create_theory_1D(x, unsmeared_data, page_id, model, data, state,
+                                          data_description="Data unsmeared",
+                                          data_id="Data  " + data.name + " unsmeared",
+                                          dy=unsmeared_error)
                 
             if sq_model is not None and pq_model is not None:
Index: src/sas/sasgui/perspectives/fitting/model_thread.py
===================================================================
--- src/sas/sasgui/perspectives/fitting/model_thread.py	(revision ca4d9854c75a5344e770dec25221dfeb5a270915)
+++ src/sas/sasgui/perspectives/fitting/model_thread.py	(revision 286c7571e8019b4c28a92d3d497cac7da825076c)
@@ -179,17 +179,20 @@
             unsmeared_output[first_bin:last_bin+1] = self.model.evalDistribution(mask)
             output = self.smearer(unsmeared_output, first_bin, last_bin)
-            
+
             # Rescale data to unsmeared model
-            unsmeared_data = numpy.zeros((len(self.data.x)))
-            unsmeared_error = numpy.zeros((len(self.data.x)))
-            unsmeared_data[first_bin:last_bin+1] = self.data.y[first_bin:last_bin+1]\
-                                                    * unsmeared_output[first_bin:last_bin+1]\
-                                                    / output[first_bin:last_bin+1]
-            unsmeared_error[first_bin:last_bin+1] = self.data.dy[first_bin:last_bin+1]\
-                                                    * unsmeared_output[first_bin:last_bin+1]\
-                                                    / output[first_bin:last_bin+1]
-            unsmeared_output=unsmeared_output[index]
-            unsmeared_data=unsmeared_data[index]
-            unsmeared_error=unsmeared_error
+            # Check that the arrays are compatible. If we only have a model but no data,
+            # the length of data.y will be zero.
+            if isinstance(self.data.y, numpy.ndarray) and output.shape == self.data.y.shape:
+                unsmeared_data = numpy.zeros((len(self.data.x)))
+                unsmeared_error = numpy.zeros((len(self.data.x)))
+                unsmeared_data[first_bin:last_bin+1] = self.data.y[first_bin:last_bin+1]\
+                                                        * unsmeared_output[first_bin:last_bin+1]\
+                                                        / output[first_bin:last_bin+1]
+                unsmeared_error[first_bin:last_bin+1] = self.data.dy[first_bin:last_bin+1]\
+                                                        * unsmeared_output[first_bin:last_bin+1]\
+                                                        / output[first_bin:last_bin+1]
+                unsmeared_output=unsmeared_output[index]
+                unsmeared_data=unsmeared_data[index]
+                unsmeared_error=unsmeared_error
         else:
             output[index] = self.model.evalDistribution(self.data.x[index])
