Index: src/sas/qtgui/Perspectives/Fitting/FittingWidget.py
===================================================================
--- src/sas/qtgui/Perspectives/Fitting/FittingWidget.py	(revision c149fba985009ceab4afc61937f209ab90df4cc0)
+++ src/sas/qtgui/Perspectives/Fitting/FittingWidget.py	(revision e900a47d648cb8f4793016ce4c25cfc25f615e89)
@@ -2870,8 +2870,4 @@
         self.createNewIndex(weighted_data)
 
-        # Plot residuals if actual data
-        if not self.data_is_loaded:
-            return
-
         # Calculate difference between return_data and logic.data
         self.chi2 = FittingUtilities.calculateChi2(weighted_data, self.data)
@@ -2879,4 +2875,8 @@
         chi2_repr = "---" if self.chi2 is None else GuiUtils.formatNumber(self.chi2, high=True)
         self.lblChi2Value.setText(chi2_repr)
+
+        # Plot residuals if actual data
+        if not self.data_is_loaded:
+            return
 
         residuals_plot = FittingUtilities.plotResiduals(self.data, weighted_data)
Index: src/sas/qtgui/Perspectives/Fitting/SmearingWidget.py
===================================================================
--- src/sas/qtgui/Perspectives/Fitting/SmearingWidget.py	(revision a5f7bf46609d4b1b0851bfc34037a998c20f161e)
+++ src/sas/qtgui/Perspectives/Fitting/SmearingWidget.py	(revision e900a47d648cb8f4793016ce4c25cfc25f615e89)
@@ -64,7 +64,13 @@
         self.kernel_model = None
         # dQ data variables
-        smear_type = None
-        dq_l = None
-        dq_r = None
+        self.smear_type = None
+        self.dq_l = None
+        self.dq_r = None
+
+        # current pinhole/slot values
+        self.pinhole = 0.0
+        self.slit_height = 0.0
+        self.slit_width = 0.0
+
         # Let only floats in the line edits
         self.txtSmearDown.setValidator(GuiUtils.DoubleValidator())
@@ -184,4 +190,14 @@
         # Recalculate the smearing
         index = self.cbSmearing.currentIndex()
+        ## update the backup values based on model choice
+        smearing, accuracy, d_down, d_up = self.state()
+        # don't save the state if dQ Data
+        if smearing == "Custom Pinhole Smear":
+            self.pinhole = d_down
+            self.accuracy = accuracy
+        elif smearing == 'Custom Slit Smear':
+            self.slit_height = d_up
+            self.slit_width = d_down
+
         self.onIndexChange(index)
 
@@ -221,4 +237,6 @@
             self.lblSmearUp.setText('<html><head/><body><p>dQ/Q</p></body></html>')
             self.lblUnitUp.setText('%')
+        self.txtSmearUp.setText(str(self.pinhole))
+
         self.txtSmearDown.setEnabled(True)
         self.txtSmearUp.setEnabled(True)
@@ -234,4 +252,6 @@
         self.lblUnitDown.setText('<html><head/><body><p>Ã
 <span style=" vertical-align:super;">-1</span></p></body></html>')
+        self.txtSmearDown.setText(str(self.slit_height))
+        self.txtSmearUp.setText(str(self.slit_width))
         self.txtSmearDown.setEnabled(True)
         self.txtSmearUp.setEnabled(True)
@@ -277,9 +297,9 @@
             accuracy = str(self.model.item(MODEL.index('ACCURACY')).text())
             try:
-                d_down = float(self.model.item(MODEL.index('PINHOLE_MIN')).text())
+                d_down = float(self.txtSmearUp.text())
             except ValueError:
                 d_down = None
             try:
-                d_up = float(self.model.item(MODEL.index('PINHOLE_MAX')).text())
+                d_up = float(self.txtSmearDown.text())
             except ValueError:
                 d_up = None
@@ -292,6 +312,4 @@
         """
         # Update the model -> controls update automatically
-        #if smearing is not None:
-            #self.model.item(MODEL.index('SMEARING')).setText(smearing)
         if accuracy is not None:
             self.model.item(MODEL.index('ACCURACY')).setText(accuracy)
@@ -347,4 +365,7 @@
         if d_height is None:
             d_height = 0.0
+
+        self.slit_width = d_width
+        self.slit_height = d_height
 
         if isinstance(self.data, Data2D):
