diff --git a/fsl/data/melodicimage.py b/fsl/data/melodicimage.py
index fd9772744611064de5dd9b37f09c27abfd7e1a6c..21bc8005e89a8c801b0972752ef234f8f9066cff 100644
--- a/fsl/data/melodicimage.py
+++ b/fsl/data/melodicimage.py
@@ -128,6 +128,13 @@ class MelodicImage(fslimage.Image):
         return melresults.getDataFile(self.__meldir)
 
 
+    def getMeanFile(self):
+        """Returns the file name of the mean data image associated with this
+        ``MelodicImage``. See the :func:`.melodicresults.getMeanFile` function.
+        """
+        return melresults.getMeanFile(self.__meldir) 
+
+
     def getICClassification(self):
         """Return the :class:`.MelodicClassification` instance associated with
         this ``MelodicImage``.
diff --git a/fsl/data/melodicresults.py b/fsl/data/melodicresults.py
index ab159fbb6a0631938719f18469d33ddfe0b41187..bcc60cb1449c332a92956e520f90e5fe7ab03127 100644
--- a/fsl/data/melodicresults.py
+++ b/fsl/data/melodicresults.py
@@ -107,10 +107,8 @@ def getDataFile(meldir):
 
     dataFile = op.join(topDir, 'filtered_func_data')
 
-    try:
-        return fslimage.addExt(dataFile, mustExist=True)
-    except ValueError:
-        return None
+    try:               return fslimage.addExt(dataFile, mustExist=True)
+    except ValueError: return None
 
 
 def getMeanFile(meldir):
diff --git a/fsl/fsleyes/autodisplay.py b/fsl/fsleyes/autodisplay.py
index 99c8f42e76efc50a2d678638b4f647be54839d26..cb28ad37436839d649c586b6d3628bf9af1d456e 100644
--- a/fsl/fsleyes/autodisplay.py
+++ b/fsl/fsleyes/autodisplay.py
@@ -182,7 +182,22 @@ def _MelodicImageDisplay(overlay, overlayList, displayCtx):
     opts.negativeCmap    = 'Blue-LightBlue'
     opts.displayRange    = [1.5, 5.0]
     opts.clippingRange   = [1.5, opts.dataMax]
-    opts.useNegativeCmap = True 
+    opts.useNegativeCmap = True
+
+    # Add the mean as an underlay
+    idx      = overlayList.index(overlay)
+    meanFile = overlay.getMeanFile()
+    existing = [op.abspath(o.dataSource) for o in overlayList]
+
+    # But only if it's not
+    # already in the list
+    if meanFile not in existing:
+        
+        log.debug('Inserting mean melodic image into '
+                  'overlay list: {}'.format(meanFile))
+
+        meanImg = fslimage.Image(meanFile)
+        overlayList.insert(idx, meanImg)
 
 
 def _ModelDisplay(overlay, display, overlayList, displayCtx):
diff --git a/fsl/fsleyes/controls/melodicclassificationpanel.py b/fsl/fsleyes/controls/melodicclassificationpanel.py
index af2b2a90ee4347e0166cdf925f062b0ddd17f9b3..8154c9ad81b196ac012fca90c715dcc0473181d9 100644
--- a/fsl/fsleyes/controls/melodicclassificationpanel.py
+++ b/fsl/fsleyes/controls/melodicclassificationpanel.py
@@ -20,7 +20,6 @@ import pwidgets.notebook         as notebook
 
 import fsl.utils.settings        as fslsettings
 import fsl.data.strings          as strings
-import fsl.data.image            as fslimage
 import fsl.data.melodicresults   as fslmelresults
 import fsl.data.melodicimage     as fslmelimage
 import fsl.fsleyes.colourmaps    as fslcm
@@ -377,27 +376,22 @@ class MelodicClassificationPanel(fslpanel.FSLEyesPanel):
             return
 
         # Try loading the melodic_IC image
-        # specified in the label file. We'll
-        # load the mean image as well, as an
-        # underlay.
+        # specified in the label file. 
         try:
             overlay = fslmelimage.MelodicImage( melDir)
-            mean    = fslmelresults.getMeanFile(melDir)
-            mean    = fslimage.Image(           mean)
 
-            log.debug('Adding {} and {} to overlay list'.format(overlay, mean))
+            log.debug('Adding {} to overlay list'.format(overlay))
 
             self._overlayList.disableListener('overlays', self._name)
             self._displayCtx .disableListener('selectedOverlay', self._name)
-            self._overlayList.extend([mean, overlay])
+            self._overlayList.append(overlay)
             self._overlayList.enableListener('overlays', self._name)
             self._displayCtx .enableListener('selectedOverlay', self._name)
 
             if self._displayCtx.autoDisplay:
-                for o in [overlay, mean]:
-                    autodisplay.autoDisplay(o,
-                                            self._overlayList,
-                                            self._displayCtx)
+                autodisplay.autoDisplay(overlay,
+                                        self._overlayList,
+                                        self._displayCtx)
 
             fslsettings.write('loadOverlayLastDir', op.abspath(melDir))