Index: src/sas/qtgui/Calculators/DataOperationUtilityPanel.py
===================================================================
--- src/sas/qtgui/Calculators/DataOperationUtilityPanel.py	(revision cee5c78929349ae10afc88cb8b95e0c907f1826a)
+++ src/sas/qtgui/Calculators/DataOperationUtilityPanel.py	(revision 7fb471d81b5d11daed3df86a4e8427e6a832cf7a)
@@ -273,5 +273,5 @@
                 msg = 'DataOperation: Number requires a float number'
                 logging.warning(msg)
-                self.txtNumber.setStyleSheet(QtCore.QString(BG_RED))
+                self.txtNumber.setStyleSheet(BG_RED)
 
             elif float(self.txtNumber.text()) == 0.:
@@ -279,8 +279,8 @@
                 msg = 'DataOperation: Number requires a non zero number'
                 logging.warning(msg)
-                self.txtNumber.setStyleSheet(QtCore.QString(BG_RED))
+                self.txtNumber.setStyleSheet(BG_RED)
 
             else:
-                self.txtNumber.setStyleSheet(QtCore.QString(BG_WHITE))
+                self.txtNumber.setStyleSheet(BG_WHITE)
                 self.data2 = float(self.txtNumber.text())
                 self.updatePlot(self.graphData2, self.layoutData2, self.data2)
@@ -293,11 +293,11 @@
         else:
             if self.cbData2.currentText() == 'Number':
-                self.cbData1.setStyleSheet(QtCore.QString(BG_WHITE))
-                self.cbData2.setStyleSheet(QtCore.QString(BG_WHITE))
+                self.cbData1.setStyleSheet(BG_WHITE)
+                self.cbData2.setStyleSheet(BG_WHITE)
                 return True
 
             elif self.data1.__class__.__name__ != self.data2.__class__.__name__:
-                self.cbData1.setStyleSheet(QtCore.QString(BG_RED))
-                self.cbData2.setStyleSheet(QtCore.QString(BG_RED))
+                self.cbData1.setStyleSheet(BG_RED)
+                self.cbData2.setStyleSheet(BG_RED)
                 print(self.data1.__class__.__name__ != self.data2.__class__.__name__)
                 logging.warning('Cannot compute data of different dimensions')
@@ -308,6 +308,6 @@
                              not all(i == j for i, j in zip(self.data1.x, self.data2.x))):
                 logging.warning('Cannot compute 1D data of different lengths')
-                self.cbData1.setStyleSheet(QtCore.QString(BG_RED))
-                self.cbData2.setStyleSheet(QtCore.QString(BG_RED))
+                self.cbData1.setStyleSheet(BG_RED)
+                self.cbData2.setStyleSheet(BG_RED)
                 return False
 
@@ -320,12 +320,12 @@
                                 zip(self.data1.qy_data, self.data2.qy_data))
                          ):
-                self.cbData1.setStyleSheet(QtCore.QString(BG_RED))
-                self.cbData2.setStyleSheet(QtCore.QString(BG_RED))
+                self.cbData1.setStyleSheet(BG_RED)
+                self.cbData2.setStyleSheet(BG_RED)
                 logging.warning('Cannot compute 2D data of different lengths')
                 return False
 
             else:
-                self.cbData1.setStyleSheet(QtCore.QString(BG_WHITE))
-                self.cbData2.setStyleSheet(QtCore.QString(BG_WHITE))
+                self.cbData1.setStyleSheet(BG_WHITE)
+                self.cbData2.setStyleSheet(BG_WHITE)
                 return True
 
@@ -333,18 +333,18 @@
         """ Check that name of output does not already exist """
         name_to_check = str(self.txtOutputData.text())
-        self.txtOutputData.setStyleSheet(QtCore.QString(BG_WHITE))
+        self.txtOutputData.setStyleSheet(BG_WHITE)
 
         if name_to_check is None or name_to_check == '':
-            self.txtOutputData.setStyleSheet(QtCore.QString(BG_RED))
+            self.txtOutputData.setStyleSheet(BG_RED)
             logging.warning('No output name')
             return False
 
         elif name_to_check in self.list_data_items:
-            self.txtOutputData.setStyleSheet(QtCore.QString(BG_RED))
+            self.txtOutputData.setStyleSheet(BG_RED)
             logging.warning('The Output data name already exists')
             return False
 
         else:
-            self.txtOutputData.setStyleSheet(QtCore.QString(BG_WHITE))
+            self.txtOutputData.setStyleSheet(BG_WHITE)
             return True
 
Index: src/sas/qtgui/Calculators/GenericScatteringCalculator.py
===================================================================
--- src/sas/qtgui/Calculators/GenericScatteringCalculator.py	(revision b3e8629bf18b74f4214d6552e620fcbc4e73a28c)
+++ src/sas/qtgui/Calculators/GenericScatteringCalculator.py	(revision 7fb471d81b5d11daed3df86a4e8427e6a832cf7a)
@@ -235,22 +235,17 @@
         """Check range of text edits for QMax and Number of Qbins """
         text_edit = self.sender()
-        text_edit.setStyleSheet(
-            QtCore.QString.fromUtf8('background-color: rgb(255, 255, 255);'))
+        text_edit.setStyleSheet('background-color: rgb(255, 255, 255);')
         if text_edit.text():
             value = float(str(text_edit.text()))
             if text_edit == self.txtQxMax:
                 if value <= 0 or value > 1000:
-                    text_edit.setStyleSheet(QtCore.QString.fromUtf8(
-                        'background-color: rgb(255, 182, 193);'))
+                    text_edit.setStyleSheet('background-color: rgb(255, 182, 193);')
                 else:
-                    text_edit.setStyleSheet(QtCore.QString.fromUtf8(
-                        'background-color: rgb(255, 255, 255);'))
+                    text_edit.setStyleSheet('background-color: rgb(255, 255, 255);')
             elif text_edit == self.txtNoQBins:
                 if value < 2 or value > 1000:
-                    self.txtNoQBins.setStyleSheet(QtCore.QString.fromUtf8(
-                        'background-color: rgb(255, 182, 193);'))
+                    self.txtNoQBins.setStyleSheet('background-color: rgb(255, 182, 193);')
                 else:
-                    self.txtNoQBins.setStyleSheet(QtCore.QString.fromUtf8(
-                        'background-color: rgb(255, 255, 255);'))
+                    self.txtNoQBins.setStyleSheet('background-color: rgb(255, 255, 255);')
 
     def update_gui(self):
@@ -555,4 +550,5 @@
             # Add deferred callback for call return
             d.addCallback(self.plot_1_2d)
+            d.addErrback(self.calculateFailed)
         except:
             log_msg = "{}. stop".format(sys.exc_info()[1])
@@ -564,4 +560,10 @@
         Copied from previous version
         """
+        pass
+
+    def calculateFailed(self, reason):
+        """
+        """
+        print("Calculate Failed with:\n", reason)
         pass
 
Index: src/sas/qtgui/Calculators/ResolutionCalculatorPanel.py
===================================================================
--- src/sas/qtgui/Calculators/ResolutionCalculatorPanel.py	(revision b3e8629bf18b74f4214d6552e620fcbc4e73a28c)
+++ src/sas/qtgui/Calculators/ResolutionCalculatorPanel.py	(revision 7fb471d81b5d11daed3df86a4e8427e6a832cf7a)
@@ -111,5 +111,5 @@
         # call compute to calculate with default values
         self.createTemplate2DPlot()
-        self.onCompute()
+        #self.onCompute()
 
     # #################################
@@ -123,14 +123,14 @@
         text_edit = self.txtWavelength  # self.sender()
         if text_edit.isModified():
-            text_edit.setStyleSheet(QtCore.QString(BG_WHITE))
+            text_edit.setStyleSheet(BG_WHITE)
             input_string = str(text_edit.text())
             if self.cbWaveColor.currentText() != 'TOF':
                 input_wavelength = re.match('\d+\.?\d*', input_string)
                 if input_wavelength is None:
-                    text_edit.setStyleSheet(QtCore.QString(BG_RED))
+                    text_edit.setStyleSheet(BG_RED)
                     self.cmdCompute.setEnabled(False)
                     logging.info('Wavelength has to be a number.')
                 else:
-                    text_edit.setStyleSheet(QtCore.QString(BG_WHITE))
+                    text_edit.setStyleSheet(BG_WHITE)
                     self.cmdCompute.setEnabled(True)
             else:
@@ -139,5 +139,5 @@
 
                 if interval_wavelength is None:
-                    text_edit.setStyleSheet(QtCore.QString(BG_RED))
+                    text_edit.setStyleSheet(BG_RED)
                     self.cmdCompute.setEnabled(False)
                     logging.info("Wavelength's input has to be an interval: "
@@ -149,10 +149,10 @@
 
                     if float(wavelength_min) >= float(wavelength_max):
-                        text_edit.setStyleSheet(QtCore.QString(BG_RED))
+                        text_edit.setStyleSheet(BG_RED)
                         self.cmdCompute.setEnabled(False)
                         logging.info("Wavelength: min must be smaller than max.")
 
                     else:
-                        text_edit.setStyleSheet(QtCore.QString(BG_WHITE))
+                        text_edit.setStyleSheet(BG_WHITE)
                         self.cmdCompute.setEnabled(True)
 
@@ -163,5 +163,5 @@
 
         if text_edit.isModified():
-            text_edit.setStyleSheet(QtCore.QString(BG_WHITE))
+            text_edit.setStyleSheet(BG_WHITE)
             if self.cbWaveColor.currentText() != 'TOF':
                 pattern = '^\d+\.?\d*(|;\s*\d+)$'
@@ -170,5 +170,5 @@
 
                 if wavelength_spread_input is None:
-                    text_edit.setStyleSheet(QtCore.QString(BG_RED))
+                    text_edit.setStyleSheet(BG_RED)
                     self.cmdCompute.setEnabled(False)
                     logging.info('Wavelength spread has to be specified: '
@@ -178,5 +178,5 @@
                     split_input = wavelength_spread_input.group().split(';')
                     self.num_wave = split_input[1] if len(split_input) > 1 else 10
-                    text_edit.setStyleSheet(QtCore.QString(BG_WHITE))
+                    text_edit.setStyleSheet(BG_WHITE)
                     self.cmdCompute.setEnabled(True)
             else:
@@ -186,5 +186,5 @@
 
                 if wavelength_spread_input is None:
-                    text_edit.setStyleSheet(QtCore.QString(BG_RED))
+                    text_edit.setStyleSheet(BG_RED)
                     self.cmdCompute.setEnabled(False)
                     logging.info("Wavelength spread has to be specified: "
@@ -197,5 +197,5 @@
                     self.num_wave = split_input[1] if len(
                         split_input) > 1 else 10
-                    text_edit.setStyleSheet(QtCore.QString(BG_WHITE))
+                    text_edit.setStyleSheet(BG_WHITE)
                     self.cmdCompute.setEnabled(True)
 
@@ -205,5 +205,5 @@
 
         if text_edit.isModified():
-            text_edit.setStyleSheet(QtCore.QString(BG_WHITE))
+            text_edit.setStyleSheet(BG_WHITE)
             pattern = '^\d+\.?\d*,\s*\d+\.?\d*$'
             input_string = str(text_edit.text())
@@ -211,5 +211,5 @@
 
             if pixels_input is None:
-                text_edit.setStyleSheet(QtCore.QString(BG_RED))
+                text_edit.setStyleSheet(BG_RED)
                 self.cmdCompute.setEnabled(False)
                 logging.info('The input for the detector should contain 2 '
@@ -217,5 +217,5 @@
 
             else:
-                text_edit.setStyleSheet(QtCore.QString(BG_WHITE))
+                text_edit.setStyleSheet(BG_WHITE)
                 self.cmdCompute.setEnabled(True)
 
@@ -229,9 +229,9 @@
             q_input = re.match(pattern, input_string)
             if q_input is None:
-                text_edit.setStyleSheet(QtCore.QString(BG_RED))
+                text_edit.setStyleSheet(BG_RED)
                 self.cmdCompute.setEnabled(False)
                 logging.info('Qx and Qy should contain one or more comma-separated numbers.')
             else:
-                text_edit.setStyleSheet(QtCore.QString(BG_WHITE))
+                text_edit.setStyleSheet(BG_WHITE)
                 self.cmdCompute.setEnabled(True)
                 qx = str(self.txtQx.text()).split(',')
@@ -247,5 +247,5 @@
 
                 elif len(qx) != len(qy):
-                    text_edit.setStyleSheet(QtCore.QString(BG_RED))
+                    text_edit.setStyleSheet(BG_RED)
                     self.cmdCompute.setEnabled(False)
                     logging.info(
@@ -253,5 +253,5 @@
 
                 else:
-                    text_edit.setStyleSheet(QtCore.QString(BG_WHITE))
+                    text_edit.setStyleSheet(BG_WHITE)
                     self.cmdCompute.setEnabled(True)
 
@@ -261,5 +261,5 @@
 
         if text_edit.isModified():
-            text_edit.setStyleSheet(QtCore.QString(BG_WHITE))
+            text_edit.setStyleSheet(BG_WHITE)
             input_string = str(text_edit.text())
             pattern = '^\d+\.?\d*(|,\s*\d+)$'
@@ -267,5 +267,5 @@
 
             if aperture_input is None:
-                text_edit.setStyleSheet(QtCore.QString(BG_RED))
+                text_edit.setStyleSheet(BG_RED)
                 self.cmdCompute.setEnabled(False)
                 logging.info('A circular aperture is defined by a single '
@@ -274,5 +274,5 @@
 
             else:
-                text_edit.setStyleSheet(QtCore.QString(BG_WHITE))
+                text_edit.setStyleSheet(BG_WHITE)
                 self.cmdCompute.setEnabled(True)
 
@@ -524,4 +524,5 @@
 
             cal_res.addCallback(self.complete)
+            cal_res.addErrback(self.calculateFailed)
 
             # logging.info("Computation is in progress...")
@@ -531,4 +532,8 @@
             raise
 
+    def calculateFailed(self, reason):
+        print("calculateFailed Failed with:\n", reason)
+        pass
+
     def complete(self, image):
         """
@@ -562,4 +567,7 @@
         : 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,
                     qx_min, qx_max,
Index: src/sas/qtgui/Calculators/SlitSizeCalculator.py
===================================================================
--- src/sas/qtgui/Calculators/SlitSizeCalculator.py	(revision b3e8629bf18b74f4214d6552e620fcbc4e73a28c)
+++ src/sas/qtgui/Calculators/SlitSizeCalculator.py	(revision 7fb471d81b5d11daed3df86a4e8427e6a832cf7a)
@@ -82,7 +82,4 @@
             return
 
-        if isinstance(path, QtCore.QString):
-            path = str(path)
-
         return path
 
Index: src/sas/qtgui/Calculators/UnitTesting/DataOperationUtilityTest.py
===================================================================
--- src/sas/qtgui/Calculators/UnitTesting/DataOperationUtilityTest.py	(revision 0c468bf6b4ba74af507bdcabc388e3094ca3e790)
+++ src/sas/qtgui/Calculators/UnitTesting/DataOperationUtilityTest.py	(revision 7fb471d81b5d11daed3df86a4e8427e6a832cf7a)
@@ -8,6 +8,6 @@
 from PyQt4.QtTest import QTest
 from PyQt4.QtCore import Qt
-from mock import MagicMock
-from mock import patch
+from unittest.mock import MagicMock
+from unittest.mock import patch
 
 from twisted.internet import threads
Index: src/sas/qtgui/Calculators/UnitTesting/DensityCalculatorTest.py
===================================================================
--- src/sas/qtgui/Calculators/UnitTesting/DensityCalculatorTest.py	(revision 464cd0702ca4f47ed61d237d9acecd5975d8abac)
+++ src/sas/qtgui/Calculators/UnitTesting/DensityCalculatorTest.py	(revision 7fb471d81b5d11daed3df86a4e8427e6a832cf7a)
@@ -6,5 +6,5 @@
 from PyQt4.QtTest import QTest
 from PyQt4 import QtCore
-from mock import MagicMock
+from unittest.mock import MagicMock
 
 ####### TEMP
Index: src/sas/qtgui/Calculators/UnitTesting/GenericScatteringCalculatorTest.py
===================================================================
--- src/sas/qtgui/Calculators/UnitTesting/GenericScatteringCalculatorTest.py	(revision 464cd0702ca4f47ed61d237d9acecd5975d8abac)
+++ src/sas/qtgui/Calculators/UnitTesting/GenericScatteringCalculatorTest.py	(revision 7fb471d81b5d11daed3df86a4e8427e6a832cf7a)
@@ -7,6 +7,6 @@
 
 from PyQt4.QtCore import Qt
-from mock import MagicMock
-from mock import patch
+from unittest.mock import MagicMock
+from unittest.mock import patch
 
 # set up import paths
Index: src/sas/qtgui/Calculators/UnitTesting/ResolutionCalculatorPanelTest.py
===================================================================
--- src/sas/qtgui/Calculators/UnitTesting/ResolutionCalculatorPanelTest.py	(revision 170e95d7e328a0390445b138c413c72b4aa20f2d)
+++ src/sas/qtgui/Calculators/UnitTesting/ResolutionCalculatorPanelTest.py	(revision 7fb471d81b5d11daed3df86a4e8427e6a832cf7a)
@@ -8,6 +8,5 @@
 from PyQt4.QtTest import QTest
 from PyQt4.QtCore import Qt
-from mock import MagicMock
-from mock import patch
+from unittest.mock import MagicMock
 
 from twisted.internet import threads
Index: src/sas/qtgui/Calculators/UnitTesting/SLDCalculatorTest.py
===================================================================
--- src/sas/qtgui/Calculators/UnitTesting/SLDCalculatorTest.py	(revision 464cd0702ca4f47ed61d237d9acecd5975d8abac)
+++ src/sas/qtgui/Calculators/UnitTesting/SLDCalculatorTest.py	(revision 7fb471d81b5d11daed3df86a4e8427e6a832cf7a)
@@ -6,5 +6,5 @@
 from PyQt4.QtTest import QTest
 from PyQt4 import QtCore
-from mock import MagicMock
+from unittest.mock import MagicMock
 
 ####### TEMP
Index: src/sas/qtgui/Calculators/UnitTesting/SlitSizeCalculatorTest.py
===================================================================
--- src/sas/qtgui/Calculators/UnitTesting/SlitSizeCalculatorTest.py	(revision b3e8629bf18b74f4214d6552e620fcbc4e73a28c)
+++ src/sas/qtgui/Calculators/UnitTesting/SlitSizeCalculatorTest.py	(revision 7fb471d81b5d11daed3df86a4e8427e6a832cf7a)
@@ -4,5 +4,5 @@
 from PyQt4.QtTest import QTest
 from PyQt4.QtCore import Qt
-from mock import MagicMock
+from unittest.mock import MagicMock
 
 # set up import paths
