diff --git a/fsl/fslview/controls/overlaylistpanel.py b/fsl/fslview/controls/overlaylistpanel.py
index 46800e001961194c1a6a61e441a0f36e43b0b055..76f44f211cde17c05044647b0e4c3c95a2f114a7 100644
--- a/fsl/fslview/controls/overlaylistpanel.py
+++ b/fsl/fslview/controls/overlaylistpanel.py
@@ -100,7 +100,10 @@ class ListItemWidget(wx.Panel):
         if ev.GetEventObject() is not self:
             return
 
+        group = self.displayCtx.overlayGroups[0]
+
         self.display.removeListener('enabled', self.name)
+        group       .removeListener('overlays', self.name)
 
         if isinstance(self.overlay, fslimage.Image):
             self.overlay.removeListener('saved', self.name)
diff --git a/fsl/fslview/displaycontext/display.py b/fsl/fslview/displaycontext/display.py
index bb38e7af0f61dd21b9a76039c2bb94438c8ae6eb..fae54eeae0a6a81105ffc4c3081c07c0b546feb7 100644
--- a/fsl/fslview/displaycontext/display.py
+++ b/fsl/fslview/displaycontext/display.py
@@ -165,8 +165,19 @@ class Display(props.SyncableHasProperties):
         # Populate the possible choices
         # for the overlayType property
         overlayTypeProp = self.getProp('overlayType')
-        possibleTypes   = OVERLAY_TYPES[overlay]
-
+        possibleTypes   = list(OVERLAY_TYPES[overlay])
+
+        # Special cases:
+        #
+        # If the overlay is an image which
+        # does not have a fourth dimension
+        # of length three, it can't be
+        # a vector
+        if isinstance(overlay, fslimage.Image) and \
+           (len(overlay.shape) != 4 or overlay.shape[-1] != 3):
+            possibleTypes.remove('rgbvector')
+            possibleTypes.remove('linevector')
+            
         for pt in possibleTypes:
             log.debug('Enabling overlay type {} for {}'.format(pt, overlay))
             label = strings.choices[self, 'overlayType', pt]