Index: src/sas/sasgui/perspectives/fitting/basepage.py
===================================================================
--- src/sas/sasgui/perspectives/fitting/basepage.py	(revision 345e7e4a8c6f5977c8c07032553b5ab00bdf837d)
+++ src/sas/sasgui/perspectives/fitting/basepage.py	(revision d3911e3cf881d888113c59010d5c63db40c0181b)
@@ -1041,5 +1041,5 @@
                         disp_model = POLYDISPERSITY_MODELS['array']()
                         if hasattr(state, "values") and \
-                                 self.disp_cb_dict[item].GetValue() is True:
+                                 self.disp_cb_dict[item].GetValue():
                             if len(state.values) > 0:
                                 self.values = state.values
@@ -1541,8 +1541,6 @@
                         index_data = ((self.qmin_x <= self.data.x) &
                                       (self.data.x <= self.qmax_x))
-                        val = self.data.x[index_data is True]
-                        val = len(val) if isinstance(val, list) else 1
-                        self.Npts_fit.SetValue(str(val))
-
+                        val = str(len(self.data.x[index_data]))
+                        self.Npts_fit.SetValue(val)
                     else:
                         # No data in the panel
@@ -2147,5 +2145,5 @@
                 flag = False
             else:
-                self.Npts_fit.SetValue(str(len(index_data[index_data is True])))
+                self.Npts_fit.SetValue(str(len(index_data[index_data])))
                 self.fitrange = True
 
@@ -2182,7 +2180,5 @@
                 flag = False
             else:
-                val = index_data[index_data is True]
-                val = len(val) if isinstance(val, list) else 1
-                self.Npts_fit.SetValue(str(val))
+                self.Npts_fit.SetValue(str(len(index_data[index_data])))
                 self.fitrange = True
 
@@ -2628,5 +2624,5 @@
             Layout after self._draw_model
         """
-        if ON_MAC is True:
+        if ON_MAC:
             time.sleep(1)
 
Index: src/sas/sasgui/perspectives/fitting/fitpage.py
===================================================================
--- src/sas/sasgui/perspectives/fitting/fitpage.py	(revision 345e7e4a8c6f5977c8c07032553b5ab00bdf837d)
+++ src/sas/sasgui/perspectives/fitting/fitpage.py	(revision 24fd27a2f35f316c4971c10c5c3a317dd9357597)
@@ -1618,5 +1618,5 @@
                 return
         # check if it is pinhole smear and get min max if it is.
-        if data.dx is not None and not numpy.any(data.dx):
+        if data.dx is not None and numpy.any(data.dx):
             self.smear_type = "Pinhole"
             self.dq_l = data.dx[0]
Index: src/sas/sasgui/perspectives/fitting/model_thread.py
===================================================================
--- src/sas/sasgui/perspectives/fitting/model_thread.py	(revision 286c7571e8019b4c28a92d3d497cac7da825076c)
+++ src/sas/sasgui/perspectives/fitting/model_thread.py	(revision c1681ea27c21b9b9a32ba91f1808186a0aae0396)
@@ -82,6 +82,4 @@
             fn.set_model(self.model)
             fn.set_index(index_model)
-            # Get necessary data from self.data and set the data for smearing
-            fn.get_data()
             # Calculate smeared Intensity
             #(by Gaussian averaging): DataLoader/smearing2d/Smearer2D()
@@ -89,7 +87,8 @@
         else:
             # calculation w/o smearing
-            value = self.model.evalDistribution(\
-                [self.data.qx_data[index_model],
-                 self.data.qy_data[index_model]])
+            value = self.model.evalDistribution([
+                self.data.qx_data[index_model],
+                self.data.qy_data[index_model]
+            ])
         output = numpy.zeros(len(self.data.qx_data))
         # output default is None
@@ -198,11 +197,19 @@
             output[index] = self.model.evalDistribution(self.data.x[index])
 
-        sq_model = None
-        pq_model = None
+        sq_values = None
+        pq_values = None
+        s_model = None
+        p_model = None
         if isinstance(self.model, MultiplicationModel):
-            sq_model = numpy.zeros((len(self.data.x)))
-            pq_model = numpy.zeros((len(self.data.x)))
-            sq_model[index] = self.model.s_model.evalDistribution(self.data.x[index])
-            pq_model[index] = self.model.p_model.evalDistribution(self.data.x[index])
+            s_model = self.model.s_model
+            p_model = self.model.p_model
+        elif hasattr(self.model, "get_composition_models"):
+            p_model, s_model = self.model.get_composition_models()
+
+        if p_model is not None and s_model is not None:
+            sq_values = numpy.zeros((len(self.data.x)))
+            pq_values = numpy.zeros((len(self.data.x)))
+            sq_values[index] = s_model.evalDistribution(self.data.x[index])
+            pq_values[index] = p_model.evalDistribution(self.data.x[index])
 
         elapsed = time.time() - self.starttime
@@ -221,6 +228,6 @@
                       unsmeared_data=unsmeared_data,
                       unsmeared_error=unsmeared_error,
-                      pq_model=pq_model,
-                      sq_model=sq_model)
+                      pq_model=pq_values,
+                      sq_model=sq_values)
 
     def results(self):
