Index: src/sas/qtgui/Perspectives/Fitting/FittingOptions.py
===================================================================
--- src/sas/qtgui/Perspectives/Fitting/FittingOptions.py	(revision b0c5e8c49a3e4e82f4f885ba7ad4d73fb8d6c59f)
+++ src/sas/qtgui/Perspectives/Fitting/FittingOptions.py	(revision 72f48343c6b87b2752d741732a03954367a57a60)
@@ -19,4 +19,5 @@
 # Set the default optimizer
 fitters.FIT_DEFAULT_ID = 'lm'
+
 
 class FittingOptions(QtGui.QDialog, Ui_FittingOptions):
@@ -66,5 +67,9 @@
         self.assignValidators()
 
+        # Set defaults
         self.current_fitter_id = fitters.FIT_DEFAULT_ID
+
+        # OK has to be initialized to True, after initial validator setup
+        self.buttonBox.button(QtGui.QDialogButtonBox.Ok).setEnabled(True)
 
         # Display HTML content
@@ -80,6 +85,8 @@
             if type(f_type) == types.FunctionType:
                 validator = QtGui.QIntValidator()
+                validator.setBottom(0)
             elif f_type == types.FloatType:
                 validator = QtGui.QDoubleValidator()
+                validator.setBottom(0)
             else:
                 continue
@@ -88,4 +95,19 @@
                 if hasattr(line_edit, 'setValidator') and validator is not None:
                     line_edit.setValidator(validator)
+                    line_edit.textChanged.connect(self.check_state)
+                    line_edit.textChanged.emit(line_edit.text())
+
+    def check_state(self, *args, **kwargs):
+        sender = self.sender()
+        validator = sender.validator()
+        state = validator.validate(sender.text(), 0)[0]
+        if state == QtGui.QValidator.Acceptable:
+            color = '' # default
+            self.buttonBox.button(QtGui.QDialogButtonBox.Ok).setEnabled(True)
+        else:
+            color = '#fff79a' # yellow
+            self.buttonBox.button(QtGui.QDialogButtonBox.Ok).setEnabled(False)
+
+        sender.setStyleSheet('QLineEdit { background-color: %s }' % color)
 
     def onAlgorithmChange(self, index):
Index: src/sas/qtgui/Perspectives/Fitting/FittingWidget.py
===================================================================
--- src/sas/qtgui/Perspectives/Fitting/FittingWidget.py	(revision b0c5e8c49a3e4e82f4f885ba7ad4d73fb8d6c59f)
+++ src/sas/qtgui/Perspectives/Fitting/FittingWidget.py	(revision 72f48343c6b87b2752d741732a03954367a57a60)
@@ -1363,8 +1363,11 @@
         """
         datafile = QtGui.QFileDialog.getOpenFileName(
-            self, "Choose a weight file", "", "All files (*.*)")
-        if not datafile:
+            self, "Choose a weight file", "", "All files (*.*)",
+            None, QtGui.QFileDialog.DontUseNativeDialog)
+
+        if datafile is None:
             logging.info("No weight data chosen.")
             raise IOError
+
         values = []
         weights = []
Index: src/sas/qtgui/Perspectives/Fitting/UI/FittingOptionsUI.ui
===================================================================
--- src/sas/qtgui/Perspectives/Fitting/UI/FittingOptionsUI.ui	(revision b0c5e8c49a3e4e82f4f885ba7ad4d73fb8d6c59f)
+++ src/sas/qtgui/Perspectives/Fitting/UI/FittingOptionsUI.ui	(revision 72f48343c6b87b2752d741732a03954367a57a60)
@@ -116,5 +116,5 @@
                <item>
                 <property name="text">
-                 <string>radom</string>
+                 <string>random</string>
                 </property>
                </item>
Index: src/sas/qtgui/Perspectives/Fitting/UnitTesting/FittingOptionsTest.py
===================================================================
--- src/sas/qtgui/Perspectives/Fitting/UnitTesting/FittingOptionsTest.py	(revision b0c5e8c49a3e4e82f4f885ba7ad4d73fb8d6c59f)
+++ src/sas/qtgui/Perspectives/Fitting/UnitTesting/FittingOptionsTest.py	(revision 72f48343c6b87b2752d741732a03954367a57a60)
@@ -61,4 +61,18 @@
         self.assertIsInstance(self.widget.ftol_de.validator(), QtGui.QDoubleValidator)
         self.assertIsInstance(self.widget.xtol_de.validator(), QtGui.QDoubleValidator)
+
+        # bottom value for floats and ints
+        self.assertEqual(self.widget.steps_de.validator().bottom(), 0)
+        self.assertEqual(self.widget.CR_de.validator().bottom(), 0)
+
+        # Behaviour on empty cell
+        self.widget.onAlgorithmChange(3)
+        self.widget.steps_de.setText("")
+        # This should disable the OK button
+        self.assertFalse(self.widget.buttonBox.button(QtGui.QDialogButtonBox.Ok).isEnabled())
+        # Let's put some valid value in lineedit
+        self.widget.steps_de.setText("1")
+        # This should enable the OK button
+        self.assertTrue(self.widget.buttonBox.button(QtGui.QDialogButtonBox.Ok).isEnabled())
 
     def testOnAlgorithmChange(self):
