diff --git a/fsl/fslview/overlay.py b/fsl/fslview/overlay.py
index 80f87619e72ade22502b750a3bad092f3f941375..9c9819daee60db38225934c115d46d2c1d8c726a 100644
--- a/fsl/fslview/overlay.py
+++ b/fsl/fslview/overlay.py
@@ -283,6 +283,7 @@ def loadOverlays(paths, loadFunc='default', errorFunc='default', saveDir=True):
 
     if defaultLoad:
         loadDlg.Close()
+        loadDlg.Destroy()
 
     if saveDir and len(paths) > 0:
         fslsettings.write('loadOverlayLastDir', op.dirname(paths[-1]))
@@ -333,6 +334,10 @@ def interactiveLoadOverlays(fromDir=None, **kwargs):
         return []
 
     paths  = dlg.GetPaths()
+
+    dlg.Destroy()
+    del dlg
+    
     images = loadOverlays(paths, saveDir=saveFromDir, **kwargs)
 
     return images
diff --git a/fsl/utils/dialog.py b/fsl/utils/dialog.py
index 94779a5d24861e9776f035976e65fcc99c0478e5..112de0bc5f2642cee48ffbb5f5b11064cc76b6ca 100644
--- a/fsl/utils/dialog.py
+++ b/fsl/utils/dialog.py
@@ -59,6 +59,7 @@ class SimpleMessageDialog(wx.Dialog):
         self.Fit()
         self.Refresh()
         self.Update()
+        wx.Yield()
 
 
 class TimeoutDialog(SimpleMessageDialog):
@@ -128,7 +129,7 @@ class ProcessingDialog(SimpleMessageDialog):
         self.SetFocus()
         self.Update()
 
-        result  = self.task(*self.args, **self.kwargs)
+        result = self.task(*self.args, **self.kwargs)
         
         self.Close()
         self.Destroy()