diff --git a/fsl/__init__.py b/fsl/__init__.py
index 5f7f01d38964fc922e33fab11524c3ae80b61058..b82e1ba3fd253ef40ddf3df9beca764a69cfb333 100644
--- a/fsl/__init__.py
+++ b/fsl/__init__.py
@@ -88,7 +88,8 @@ logHandler  = logging.StreamHandler()
 logHandler.setFormatter(logFormatter)
 
 
-log = logging.getLogger('fsl')
+# We want the root logger
+log = logging.getLogger()
 
 
 log.addHandler(logHandler)
@@ -273,6 +274,8 @@ def parseArgs(argv, allTools):
             log.setLevel(logging.MEMORY)
             log.handlers[0].addFilter(MemFilter())
             log.memory('Added filter for MEMORY messages')
+            logging.getLogger('props')   .setLevel(logging.WARNING)
+            logging.getLogger('pwidgets').setLevel(logging.WARNING)            
         
     if namespace.verbose == 1:
         log.setLevel(logging.DEBUG)
diff --git a/fsl/fslview/displaycontext/modelopts.py b/fsl/fslview/displaycontext/modelopts.py
index 24f8dad3b8bcc31cb75fe24ac85427c2563766fd..0c5ef4c009d2892309b8d98ef6e908156ae472f8 100644
--- a/fsl/fslview/displaycontext/modelopts.py
+++ b/fsl/fslview/displaycontext/modelopts.py
@@ -65,7 +65,8 @@ class ModelOpts(fsldisplay.DisplayOpts):
         self.overlayList.removeListener('overlays', self.name)
 
         for overlay in self.overlayList:
-            overlay.removeListener('name', self.name)
+            display = self.displayCtx.getDisplay(overlay)
+            display.removeListener('name', self.name)
 
         fsldisplay.DisplayOpts.destroy(self)
 
diff --git a/fsl/fslview/frame.py b/fsl/fslview/frame.py
index 440624556dd927160fbc6a93b3c5f03fbe6a7b60..9bf5b5cefcc103c8b6c3b930daefa078faa291cc 100644
--- a/fsl/fslview/frame.py
+++ b/fsl/fslview/frame.py
@@ -136,7 +136,12 @@ class FSLViewFrame(wx.Frame):
         panel = panelCls(
             self.__centrePane,
             self.__overlayList,
-            childDC) 
+            childDC)
+
+        log.debug('Created new {} ({}) with DisplayContext {}'.format(
+            panelCls.__name__,
+            id(panel),
+            id(childDC)))
 
         self.__viewPanelCount = self.__viewPanelCount + 1
 
@@ -188,8 +193,12 @@ class FSLViewFrame(wx.Frame):
         title = self.__viewPanelTitles.pop(   panel)
         dctx  = self.__viewPanelDCs   .pop(   panel)
 
-        log.debug('Destroying view panel {} ({})'.format(
-            title, type(panel).__name__))
+        log.debug('Destroying {} (title {}, id {}) and '
+                  'associated DisplayContext ({})'.format(
+                      type(panel).__name__,
+                      title,
+                      id(panel),
+                      id(dctx)))
 
         # Unbind view panel menu
         # items, and remove the menu
diff --git a/fsl/tools/fslview.py b/fsl/tools/fslview.py
index 10426ba6dacf36a7e659a849fe75250a28a1fdb8..c429066dc35b5698d784252f39bd8a512a3811ab 100644
--- a/fsl/tools/fslview.py
+++ b/fsl/tools/fslview.py
@@ -138,6 +138,9 @@ def context(args):
     # linked to this master one.
     overlayList = fsloverlay.OverlayList()
     displayCtx  = displaycontext.DisplayContext(overlayList)
+
+    log.debug('Created overlay list and master DisplayContext ({})'.format(
+        id(displayCtx)))
     
     # Load the images - the splash screen status will 
     # be updated with the currently loading overlay name