diff --git a/fsl/fsleyes/displaycontext/lightboxopts.py b/fsl/fsleyes/displaycontext/lightboxopts.py
index c8cb53c76a47fc72b0fde3d650782ef8a55c2b24..5189ec75790e175d9ef5e4df70d2c4d845753952 100644
--- a/fsl/fsleyes/displaycontext/lightboxopts.py
+++ b/fsl/fsleyes/displaycontext/lightboxopts.py
@@ -8,12 +8,17 @@
 by :class:`.LightBoxPanel` instances for managing their display settings.
 """
 
+
+import logging
 import copy
 
 import sceneopts
 import canvasopts
 
 
+log = logging.getLogger(__name__)
+
+
 class LightBoxOpts(sceneopts.SceneOpts):
     """The ``LightBoxOpts`` class contains display settings for the
     :class:`.LightBoxPanel` class.
@@ -43,3 +48,32 @@ class LightBoxOpts(sceneopts.SceneOpts):
         """
         sceneopts.SceneOpts.__init__(self, *args, **kwargs)
         self.setConstraint('zoom', 'minval', 10)
+
+        
+    def _onPerformanceChange(self, *a):
+        """Overrides :meth:`.SceneOpts._onPerformanceChange`. Changes the
+        values of the :attr:`renderMode` and :attr:`resolutionLimit`
+        properties according to the performance setting.
+        """        
+
+        if   self.performance == 4:
+            self.renderMode      = 'onscreen'
+            self.resolutionLimit = 0
+
+        elif self.performance == 3:
+            self.renderMode      = 'prerender'
+            self.resolutionLimit = 0
+
+        elif self.performance == 2:
+            self.renderMode      = 'prerender'
+            self.resolutionLimit = 1
+
+        elif self.performance == 1:
+            self.renderMode      = 'prerender'
+            self.resolutionLimit = 2
+
+        log.debug('Performance settings changed: '
+                  'renderMode={}, '
+                  'resolutionLimit={}'.format(
+                      self.renderMode,
+                      self.resolutionLimit))
diff --git a/fsl/fsleyes/displaycontext/orthoopts.py b/fsl/fsleyes/displaycontext/orthoopts.py
index 942b4a53e44ff19785c786c16e8017f35c2a92ad..96927442008db68a37af5f2cd9de90a7fcc07356 100644
--- a/fsl/fsleyes/displaycontext/orthoopts.py
+++ b/fsl/fsleyes/displaycontext/orthoopts.py
@@ -9,6 +9,7 @@ settings used by the :class:`.OrthoPanel` class.
 """
 
 
+import logging
 import copy
 
 import props
@@ -16,6 +17,9 @@ import props
 import sceneopts
 
 
+log = logging.getLogger(__name__)
+
+
 class OrthoOpts(sceneopts.SceneOpts):
     """The ``OrthoOpts`` class is used by :class:`.OrthoPanel` instances to
     manage their display settings.
@@ -88,3 +92,32 @@ class OrthoOpts(sceneopts.SceneOpts):
         self.xzoom = self.zoom
         self.yzoom = self.zoom
         self.zzoom = self.zoom
+
+        
+    def _onPerformanceChange(self, *a):
+        """Overrides :meth:`.SceneOpts._onPerformanceChange`. Changes the
+        values of the :attr:`renderMode` and :attr:`resolutionLimit`
+        properties according to the performance setting.
+        """        
+
+        if   self.performance == 4:
+            self.renderMode      = 'onscreen'
+            self.resolutionLimit = 0
+
+        elif self.performance == 3:
+            self.renderMode      = 'offscreen'
+            self.resolutionLimit = 0 
+            
+        elif self.performance == 2:
+            self.renderMode      = 'prerender'
+            self.resolutionLimit = 0
+
+        elif self.performance == 1:
+            self.renderMode      = 'prerender'
+            self.resolutionLimit = 1
+
+        log.debug('Performance settings changed: '
+                  'renderMode={}, '
+                  'resolutionLimit={}'.format(
+                      self.renderMode,
+                      self.resolutionLimit))
diff --git a/fsl/fsleyes/displaycontext/sceneopts.py b/fsl/fsleyes/displaycontext/sceneopts.py
index 6ef975fe5c220dc66bdda2d1bdd0958e5aed990f..9ad77c9ef9f5dfd56d8cb0965eb1c5b42dfc9508 100644
--- a/fsl/fsleyes/displaycontext/sceneopts.py
+++ b/fsl/fsleyes/displaycontext/sceneopts.py
@@ -76,37 +76,17 @@ class SceneOpts(props.HasProperties):
         """
         
         name = '{}_{}'.format(type(self).__name__, id(self))
-        self.addListener('performance', name, self.__onPerformanceChange)
+        self.addListener('performance', name, self._onPerformanceChange)
         
-        self.__onPerformanceChange()
+        self._onPerformanceChange()
 
-
-    def __onPerformanceChange(self, *a):
+        
+    def _onPerformanceChange(self, *a):
         """Called when the :attr:`performance` property changes.
 
-        Changes the values of the :attr:`renderMode` and and
-        :attr:`resolutionLimit` properties accoridng to the performance
-        setting.
-        """
-
-        if   self.performance == 4:
-            self.renderMode      = 'onscreen'
-            self.resolutionLimit = 0
-
-        elif self.performance == 3:
-            self.renderMode      = 'offscreen'
-            self.resolutionLimit = 0 
-            
-        elif self.performance == 2:
-            self.renderMode      = 'prerender'
-            self.resolutionLimit = 0
-
-        elif self.performance == 1:
-            self.renderMode      = 'prerender'
-            self.resolutionLimit = 1
-
-        log.debug('Performance settings changed: '
-                  'renderMode={}, '
-                  'resolutionLimit={}'.format(
-                      self.renderMode,
-                      self.resolutionLimit))
+        This method must be overridden by sub-classes to change the values of
+        the :attr:`renderMode` and :attr:`resolutionLimit` properties
+        according to the new performance setting.
+        """        
+        raise NotImplementedError('The _onPerformanceChange method must'
+                                  'be implemented by sub-classes')
diff --git a/fsl/fsleyes/gl/lightboxcanvas.py b/fsl/fsleyes/gl/lightboxcanvas.py
index 3a6a62721d5a998b8844593d2e2aeba7a0ba8ff9..86b48e6974b11cea1772848ef855d04d7d2ac294 100644
--- a/fsl/fsleyes/gl/lightboxcanvas.py
+++ b/fsl/fsleyes/gl/lightboxcanvas.py
@@ -298,7 +298,7 @@ class LightBoxCanvas(slicecanvas.SliceCanvas):
 
             self._offscreenRenderTexture.setSize(768, 768)
 
-        # The LightBoxCanvas handles re-render mode
+        # The LightBoxCanvas handles pre-render mode
         # the same way as the SliceCanvas - a separate
         # RenderTextureStack for eacn globject
         elif self.renderMode == 'prerender':