Index: src/sas/qtgui/Calculators/UnitTesting/SLDCalculatorTest.py
===================================================================
--- src/sas/qtgui/Calculators/UnitTesting/SLDCalculatorTest.py	(revision 144fe21c4befe53963fef06a9091c7d69d0b3b41)
+++ src/sas/qtgui/Calculators/UnitTesting/SLDCalculatorTest.py	(revision 9ce69ec3193ed870f2129f02525b0537ca161f76)
@@ -81,11 +81,9 @@
         self.assertEqual(self.widget.ui.editMolecularFormula.styleSheet(), '')
         self.assertEqual(self.widget.model.columnCount(), 1)
-        self.assertEqual(self.widget.model.rowCount(), 12)
+        self.assertEqual(self.widget.model.rowCount(), 11)
         self.assertEqual(self.widget.sizePolicy().Policy(), QtWidgets.QSizePolicy.Fixed)
 
     def testSimpleEntry(self):
         ''' Default compound calculations '''
-
-        self.widget.show()
 
         self.widget.ui.editMassDensity.clear()
@@ -102,6 +100,6 @@
 
         # Change mass density
-        self.widget.ui.editWavelength.clear()
-        self.widget.ui.editWavelength.setText("666.0")
+        self.widget.ui.editNeutronWavelength.clear()
+        self.widget.ui.editNeutronWavelength.setText("666.0")
 
         # Send shift-tab to update the molar volume field
@@ -130,9 +128,10 @@
 
         # Assure the mass density field is set
-        self.assertEqual(self.widget.ui.editNeutronIncXs.text(), '43.4')
+        #self.assertEqual(self.widget.ui.editNeutronIncXs.text(), '43.4')
+        self.assertEqual(self.widget.ui.editNeutronIncXs.text(), '2.89')
 
         # Reset the widget
         self.widget.modelReset()
-
+       
         self.assertEqual(self.widget.ui.editMolecularFormula.text(), "H2O")
         self.assertEqual(self.widget.ui.editMassDensity.text(), "1")
Index: src/sas/qtgui/MainWindow/DataExplorer.py
===================================================================
--- src/sas/qtgui/MainWindow/DataExplorer.py	(revision 9f4eaebeb12a476875a90e5a3d60aa6034c5ff0c)
+++ src/sas/qtgui/MainWindow/DataExplorer.py	(revision 9ce69ec3193ed870f2129f02525b0537ca161f76)
@@ -598,10 +598,35 @@
         Forces display of charts for the given data set
         """
-        plot_to_show = data_list[0]
-        # passed plot is used ONLY to figure out its title,
-        # so all the charts related by it can be pulled from 
-        # the data explorer indices.
-        filename = plot_to_show.filename
-        self.displayFile(filename=filename, is_data=plot_to_show.is_data, id=id)
+        # data_list = [QStandardItem, Data1D/Data2D]
+        plot_to_show = data_list[1]
+        plot_item = data_list[0]
+
+        # plots to show
+        new_plots = []
+
+        # Check if this is merely a plot update
+        if self.updatePlot(plot_to_show):
+            return
+
+        # Residuals get their own plot
+        if plot_to_show.plot_role == Data1D.ROLE_RESIDUAL:
+            plot_to_show.yscale='linear'
+            self.plotData([(plot_item, plot_to_show)])
+        elif plot_to_show.plot_role == Data1D.ROLE_DELETABLE:
+            # No plot
+            return
+        else:
+            # Plots with main data points on the same chart
+            # Get the main data plot
+            main_data = GuiUtils.dataFromItem(plot_item.parent())
+            if main_data is None:
+                # Try the current item
+                main_data = GuiUtils.dataFromItem(plot_item)
+            if main_data is not None:
+                new_plots.append((plot_item, main_data))
+            new_plots.append((plot_item, plot_to_show))
+
+        if new_plots:
+            self.plotData(new_plots)
 
     def addDataPlot2D(self, plot_set, item):
Index: src/sas/qtgui/Perspectives/Fitting/FittingWidget.py
===================================================================
--- src/sas/qtgui/Perspectives/Fitting/FittingWidget.py	(revision 305114c33963ce5b43f94d3b16fc71e316f72e3a)
+++ src/sas/qtgui/Perspectives/Fitting/FittingWidget.py	(revision 9ce69ec3193ed870f2129f02525b0537ca161f76)
@@ -1849,6 +1849,18 @@
         # Show the chart if ready
         data_to_show = self.data if self.data_is_loaded else self.model_data
-        if data_to_show is not None:
-            self.communicate.plotRequestedSignal.emit([data_to_show], self.tab_id)
+        # Any models for this page
+        current_index = self.all_data[self.data_index]
+        plots = GuiUtils.plotsFromFilename(self.data.filename, current_index.model())
+        fitpage_name = "" if id is None else "M"+str(self.tab_id)
+        # Has the fitted data been shown?
+        data_shown = False
+        #for plot in plots:
+        for item, plot in plots.items():
+            if fitpage_name in plot.name:
+                data_shown = True
+                self.communicate.plotRequestedSignal.emit([item, plot], self.tab_id)
+        if not data_shown:
+            # fit+data has not been shown - show just data
+            self.communicate.plotRequestedSignal.emit([item, data_to_show], self.tab_id)
 
     def onOptionsUpdate(self):
@@ -2080,4 +2092,7 @@
         self.kernel_module = self.models[model_name]()
 
+        # Change the model name to a monicker
+        self.kernel_module.name = self.modelName()
+
         # Explicitly add scale and background with default values
         temp_undo_state = self.undo_supported
@@ -2112,4 +2127,5 @@
             # Structure factor is the only selected model; build it and show all its params
             self.kernel_module = self.models[structure_factor]()
+            self.kernel_module.name = self.modelName()
             s_params = self.kernel_module._model_info.parameters
             s_params_orig = s_params
@@ -2122,4 +2138,6 @@
 
             self.kernel_module = MultiplicationModel(p_kernel, s_kernel)
+            # Modify the name to correspond to shown items
+            self.kernel_module.name = self.modelName()
             all_params = self.kernel_module._model_info.parameters.kernel_parameters
             all_param_names = [param.name for param in all_params]
@@ -2427,5 +2445,7 @@
         # Bring the GUI to normal state
         self.enableInteractiveElements()
-
+        if return_data is None:
+            self.calculateDataFailed("Results not available.")
+            return
         fitted_data = self.logic.new1DPlot(return_data, self.tab_id)
         residuals = self.calculateResiduals(fitted_data)
Index: src/sas/qtgui/Perspectives/Invariant/InvariantPerspective.py
===================================================================
--- src/sas/qtgui/Perspectives/Invariant/InvariantPerspective.py	(revision aed053275d5f293f1f6495be4c78e4b18fc52b41)
+++ src/sas/qtgui/Perspectives/Invariant/InvariantPerspective.py	(revision 9ce69ec3193ed870f2129f02525b0537ca161f76)
@@ -233,4 +233,5 @@
 
         plot_data = GuiUtils.plotsFromCheckedItems(self._manager.filesWidget.model)
+        #self.communicate.plotRequestedSignal.emit([item, plot], self.tab_id)
 
         self._manager.filesWidget.plotData(plot_data)
@@ -347,4 +348,7 @@
                 extrapolated_data.name = title
                 extrapolated_data.title = title
+                extrapolated_data.style = "Line"
+                extrapolated_data.has_errors = False
+                extrapolated_data.plot_role = Data1D.ROLE_DEFAULT
 
                 # copy labels and units of axes for plotting
@@ -378,4 +382,7 @@
                 high_out_data.name = title
                 high_out_data.title = title
+                high_out_data.style = "Line"
+                high_out_data.has_errors = False
+                high_out_data.plot_role = Data1D.ROLE_DEFAULT
 
                 # copy labels and units of axes for plotting
Index: src/sas/qtgui/Perspectives/Inversion/InversionPerspective.py
===================================================================
--- src/sas/qtgui/Perspectives/Inversion/InversionPerspective.py	(revision 855e7ad5de338b4dcd85cdca7ed61d089b9c320d)
+++ src/sas/qtgui/Perspectives/Inversion/InversionPerspective.py	(revision 9ce69ec3193ed870f2129f02525b0537ca161f76)
@@ -547,10 +547,12 @@
             self.prPlot.plot_role = Data1D.ROLE_RESIDUAL
             GuiUtils.updateModelItemWithPlot(self._data, self.prPlot, title)
+            self.communicate.plotRequestedSignal.emit([self._data,self.prPlot], None)
         if self.dataPlot is not None:
             title = self.dataPlot.name
             self.dataPlot.plot_role = Data1D.ROLE_DEFAULT
+            self.dataPlot.symbol = "Line"
+            self.dataPlot.show_errors = False
             GuiUtils.updateModelItemWithPlot(self._data, self.dataPlot, title)
-        if self.dataPlot is not None or self.prPlot is not None:
-            self.communicate.plotRequestedSignal.emit([self.logic.data], None)
+            self.communicate.plotRequestedSignal.emit([self._data,self.dataPlot], None)
         self.enableButtons()
 
Index: src/sas/qtgui/Utilities/GuiUtils.py
===================================================================
--- src/sas/qtgui/Utilities/GuiUtils.py	(revision a54bbf2b2021cfeddeb40171e2fdf6a0e00ad921)
+++ src/sas/qtgui/Utilities/GuiUtils.py	(revision 9ce69ec3193ed870f2129f02525b0537ca161f76)
@@ -567,5 +567,9 @@
     The assumption - data stored in SasView standard, in child 0
     """
-    return item.child(0).data()
+    try:
+        data = item.child(0).data()
+    except AttributeError:
+        data = None
+    return data
 
 def openLink(url):
