diff --git a/fsl/fsleyes/views/canvaspanel.py b/fsl/fsleyes/views/canvaspanel.py
index 9ac670741d461a93f757d4dc6976dd1c3e393937..4ca4ad4068d0bdd2d7ecd5ff81c84f746edc768e 100644
--- a/fsl/fsleyes/views/canvaspanel.py
+++ b/fsl/fsleyes/views/canvaspanel.py
@@ -134,7 +134,7 @@ class CanvasPanel(viewpanel.ViewPanel):
     
          1 [label="CanvasPanel"];
          2 [label="Centre panel"];
-         3 [label="Advanced layout"];
+         3 [label="Custom content (for complex layouts)"];
          4 [label="Container panel"];
          5 [label="ColourBarPanel"];
          6 [label="Content panel"];
@@ -170,10 +170,10 @@ class CanvasPanel(viewpanel.ViewPanel):
     scrollbar) may override the :meth:`centrePanelLayout` method to implement
     their own layout.  These sub-class implementations must:
 
-      1. Call the :meth:`layoutCanvasContainer` method.
+      1. Call the :meth:`layoutContainerPanel` method.
 
       2. Add the container panel (accessed via :meth:`getContainerPanel`)
-         to the centre panel (:meth:`getCentrePanel`)
+         to the centre panel (accessed via :meth:`getCentrePanel`).
 
       3. Add any other custom content to the centre panel.
     """
@@ -735,6 +735,9 @@ def _screenshot(overlayList, displayCtx, canvasPanel):
         rgb  = bmp.ConvertToImage().GetData()
         rgb  = np.fromstring(rgb, dtype=np.uint8)
 
+        log.debug('Creating bitmap {} * {} for {} screenshot'.format(
+            width, height, type(canvasPanel).__name__))
+
         data[:, :, :3] = rgb.reshape(height, width, 3)
 
         # Patch in bitmaps for every GL canvas
@@ -745,6 +748,11 @@ def _screenshot(overlayList, displayCtx, canvasPanel):
             if glCanvas is None:
                 continue
 
+            # Hidden wx objects will
+            # still return a size
+            if not glCanvas.IsShown():
+                continue
+
             pos   = relativePosition(glCanvas, parent)
             size  = glCanvas.GetClientSize().Get()
 
@@ -766,6 +774,9 @@ def _screenshot(overlayList, displayCtx, canvasPanel):
                 w    = xend - xstart
                 h    = yend - ystart
                 bmp  = bmp[:h, :w, :]
+
+            log.debug('Patching {} in at [{} - {}], [{} - {}]'.format(
+                type(glCanvas).__name__, xstart, xend, ystart, yend))
             
             data[ystart:yend, xstart:xend] = bmp