Index: src/sas/qtgui/Calculators/DataOperationUtilityPanel.py
===================================================================
--- src/sas/qtgui/Calculators/DataOperationUtilityPanel.py	(revision 0849aec6ceb97781213ef369f98e5eb61ec8cad3)
+++ src/sas/qtgui/Calculators/DataOperationUtilityPanel.py	(revision 6280464f8c6799ad2cb851c2fbb6ad66dc0fe2ba)
@@ -140,7 +140,8 @@
             data1 = self.data1
             data2 = self.data2
-            exec("output = data1 %s data2" % operator)
-        except:
-            raise
+            output = eval("data1 %s data2" % operator)
+        except Exception as ex:
+            logging.error(ex)
+            return
 
         self.output = output
Index: src/sas/qtgui/Calculators/DensityPanel.py
===================================================================
--- src/sas/qtgui/Calculators/DensityPanel.py	(revision 0849aec6ceb97781213ef369f98e5eb61ec8cad3)
+++ src/sas/qtgui/Calculators/DensityPanel.py	(revision 6280464f8c6799ad2cb851c2fbb6ad66dc0fe2ba)
@@ -60,5 +60,5 @@
 
         # set validators
-        self.ui.editMolecularFormula.setValidator(FormulaValidator(self.ui.editMolecularFormula))
+        #self.ui.editMolecularFormula.setValidator(FormulaValidator(self.ui.editMolecularFormula))
 
         rx = QtCore.QRegExp("[+\-]?(?:0|[1-9]\d*)(?:\.\d*)?(?:[eE][+\-]?\d+)?")
@@ -94,6 +94,5 @@
         self.mapper.addMapping(self.ui.editMassDensity     , MODEL.MASS_DENSITY)
 
-        # FIXME DOESNT WORK WITH QT5
-        #self.mapper.toFirst()
+        self.mapper.toFirst()
 
     def dataChanged(self, top, bottom):
@@ -140,5 +139,4 @@
 
     def modelReset(self):
-        #self.model.beginResetModel()
         try:
             self.setMode(None)
@@ -148,5 +146,4 @@
         finally:
             pass
-            #self.model.endResetModel()
 
     def displayHelp(self):
Index: src/sas/qtgui/Calculators/GenericScatteringCalculator.py
===================================================================
--- src/sas/qtgui/Calculators/GenericScatteringCalculator.py	(revision 0849aec6ceb97781213ef369f98e5eb61ec8cad3)
+++ src/sas/qtgui/Calculators/GenericScatteringCalculator.py	(revision 6280464f8c6799ad2cb851c2fbb6ad66dc0fe2ba)
@@ -135,5 +135,5 @@
                                           "SLD files (*.SLD *.sld);;PDB files (*.pdb *.PDB);; "
                                           "OMF files (*.OMF *.omf);; "
-                                          "All files (*.*)")
+                                          "All files (*.*)")[0]
             if self.datafile:
                 self.default_shape = str(self.cbShape.currentText())
Index: src/sas/qtgui/Calculators/KiessigPanel.py
===================================================================
--- src/sas/qtgui/Calculators/KiessigPanel.py	(revision 0849aec6ceb97781213ef369f98e5eb61ec8cad3)
+++ src/sas/qtgui/Calculators/KiessigPanel.py	(revision 6280464f8c6799ad2cb851c2fbb6ad66dc0fe2ba)
@@ -55,6 +55,11 @@
             self.thickness.set_deltaq(dq=float(self.deltaq_in.text()))
             kiessing_result = self.thickness.compute_thickness()
-            float_as_str = "{:.3f}".format(kiessing_result)
-            self.lengthscale_out.setText(float_as_str)
+            if kiessing_result:
+                float_as_str = "{:.3f}".format(kiessing_result)
+                self.lengthscale_out.setText(float_as_str)
+            else:
+                # error or division by zero
+                self.lengthscale_out.setText("")
+
         except (ArithmeticError, ValueError):
             self.lengthscale_out.setText("")
Index: src/sas/qtgui/Calculators/ResolutionCalculatorPanel.py
===================================================================
--- src/sas/qtgui/Calculators/ResolutionCalculatorPanel.py	(revision 0849aec6ceb97781213ef369f98e5eb61ec8cad3)
+++ src/sas/qtgui/Calculators/ResolutionCalculatorPanel.py	(revision 6280464f8c6799ad2cb851c2fbb6ad66dc0fe2ba)
@@ -317,7 +317,7 @@
         if self.cbCustomSpectrum.currentText() == 'Add New':
             datafile = QtWidgets.QFileDialog.getOpenFileName(
-                self, "Choose a spectral distribution file", "",
-                "All files (*.*)",
-                QtWidgets.QFileDialog.DontUseNativeDialog)
+                self, "Choose a spectral distribution file","",
+                "All files (*.*)", None,
+                QtWidgets.QFileDialog.DontUseNativeDialog)[0]
 
             if datafile is None or str(datafile) == '':
@@ -568,10 +568,8 @@
         : return: image (numpy array)
         """
-        # This fails in py3 with
-        # [Failure instance: Traceback: <class 'TypeError'>: 'map' object is not subscriptable
-        # INVESTIGATE
-        image = map(func, qx, qy,
+        image = list(map(func, qx, qy,
                     qx_min, qx_max,
-                    qy_min, qy_max)[0]
+                    qy_min, qy_max))[0]
+
         return image
 
@@ -751,4 +749,5 @@
         self.plotter.plot()
         self.plotter.show()
+        self.plotter.update()
 
     def drawLines(self):
Index: src/sas/qtgui/Calculators/SldPanel.py
===================================================================
--- src/sas/qtgui/Calculators/SldPanel.py	(revision 0849aec6ceb97781213ef369f98e5eb61ec8cad3)
+++ src/sas/qtgui/Calculators/SldPanel.py	(revision 6280464f8c6799ad2cb851c2fbb6ad66dc0fe2ba)
@@ -128,5 +128,6 @@
 
         # set validators
-        self.ui.editMolecularFormula.setValidator(GuiUtils.FormulaValidator(self.ui.editMolecularFormula))
+        # TODO: GuiUtils.FormulaValidator() crashes with Qt5 - fix
+        #self.ui.editMolecularFormula.setValidator(GuiUtils.FormulaValidator(self.ui.editMolecularFormula))
 
         rx = QtCore.QRegExp("[+\-]?(?:0|[1-9]\d*)(?:\.\d*)?(?:[eE][+\-]?\d+)?")
@@ -148,8 +149,4 @@
 
         self.model.dataChanged.connect(self.dataChanged)
-        #QtCore.QObject.connect(
-        #    self.model,
-        #    QtCore.SIGNAL("dataChanged(QModelIndex,QModelIndex)"),
-        #    self.dataChanged)
 
         self.modelReset()
@@ -166,6 +163,5 @@
             self.mapper.addMapping(edit, key)
 
-        # FIXME DOESNT WORK WITH QT5
-        #self.mapper.toFirst()
+        self.mapper.toFirst()
 
     def dataChanged(self, top, bottom):
@@ -216,5 +212,5 @@
         finally:
             pass
-            #self.model.endResetModel()
+        #self.model.endResetModel()
 
     def displayHelp(self):
Index: src/sas/qtgui/Calculators/SlitSizeCalculator.py
===================================================================
--- src/sas/qtgui/Calculators/SlitSizeCalculator.py	(revision 0849aec6ceb97781213ef369f98e5eb61ec8cad3)
+++ src/sas/qtgui/Calculators/SlitSizeCalculator.py	(revision 6280464f8c6799ad2cb851c2fbb6ad66dc0fe2ba)
@@ -4,4 +4,5 @@
 import os
 import sys
+import logging
 
 from PyQt5 import QtCore
@@ -64,5 +65,10 @@
             return
         loader = Loader()
-        data = loader.load(path_str)[0]
+        try:
+            data = loader.load(path_str)[0]
+        # Can return multiple exceptions - gather them all under one umbrella and complain
+        except Exception as ex:
+            logging.error(ex)
+            return
 
         self.data_file.setText(os.path.basename(path_str))
@@ -79,9 +85,5 @@
                                                  "SAXSess 1D data (*.txt *.TXT *.dat *.DAT)",
                                                  None,
-                                                 QtWidgets.QFileDialog.DontUseNativeDialog)
-
-        if path is None:
-            return
-
+                                                 QtWidgets.QFileDialog.DontUseNativeDialog)[0]
         return path
 
@@ -106,10 +108,12 @@
             self.clearResults()
             msg = "ERROR: Data hasn't been loaded correctly"
-            raise RuntimeError(msg)
+            logging.error(msg)
+            return
 
         if data.__class__.__name__ == 'Data2D':
             self.clearResults()
             msg = "Slit Length cannot be computed for 2D Data"
-            raise RuntimeError(msg)
+            logging.error(msg)
+            return
 
         #compute the slit size
@@ -119,5 +123,6 @@
             if xdata == [] or xdata is None or ydata == [] or ydata is None:
                 msg = "The current data is empty please check x and y"
-                raise ValueError(msg)
+                logging.error(msg)
+                return
             slit_length_calculator = SlitlengthCalculator()
             slit_length_calculator.set_data(x=xdata, y=ydata)
@@ -126,5 +131,6 @@
             self.clearResults()
             msg = "Slit Size Calculator: %s" % (sys.exc_info()[1])
-            raise RuntimeError(msg)
+            logging.error(msg)
+            return
 
         slit_length_str = "{:.5f}".format(slit_length)
