diff --git a/fsl/fsleyes/controls/lightboxtoolbar.py b/fsl/fsleyes/controls/lightboxtoolbar.py
index f9b6a4854f461fceac1ea5ce2736dc60c0528850..67b6f7b5bb870504715ffb3a345c9642fbd5d3b2 100644
--- a/fsl/fsleyes/controls/lightboxtoolbar.py
+++ b/fsl/fsleyes/controls/lightboxtoolbar.py
@@ -31,6 +31,7 @@ class LightBoxToolBar(fsltoolbar.FSLEyesToolBar):
         
         icons = {
             'screenshot'  : fslicons.findImageFile('camera24'),
+            'movieMode'   : fslicons.findImageFile('movie24'),
             'more'        : fslicons.findImageFile('gear24'),
 
             'zax' : {
@@ -44,6 +45,7 @@ class LightBoxToolBar(fsltoolbar.FSLEyesToolBar):
 
             'more'         : fsltooltips.actions[   self,    'more'],
             'screenshot'   : fsltooltips.actions[   lb,      'screenshot'],
+            'movieMode'    : fsltooltips.properties[lb,      'movieMode'],
             'zax'          : fsltooltips.properties[lbOpts,  'zax'],
             'sliceSpacing' : fsltooltips.properties[lbOpts,  'sliceSpacing'],
             'zrange'       : fsltooltips.properties[lbOpts,  'zrange'],
@@ -60,6 +62,11 @@ class LightBoxToolBar(fsltoolbar.FSLEyesToolBar):
                 'screenshot',
                 icon=icons['screenshot'],
                 tooltip=tooltips['screenshot']),
+
+            'movieMode'    : props.Widget(
+                'movieMode',
+                icon=icons['movieMode'],
+                tooltip=tooltips['movieMode']), 
             
             'zax'          : props.Widget(
                 'zax',
@@ -94,6 +101,7 @@ class LightBoxToolBar(fsltoolbar.FSLEyesToolBar):
 
         more         = props.buildGUI(self,  self,   specs['more'])
         screenshot   = props.buildGUI(self,  lb,     specs['screenshot'])
+        movieMode    = props.buildGUI(self,  lb,     specs['movieMode'])
         zax          = props.buildGUI(self,  lbOpts, specs['zax'])
         zrange       = props.buildGUI(self,  lbOpts, specs['zrange'])
         zoom         = props.buildGUI(panel, lbOpts, specs['zoom'])
@@ -109,7 +117,7 @@ class LightBoxToolBar(fsltoolbar.FSLEyesToolBar):
         sizer.Add(spacingLabel)
         sizer.Add(spacing, flag=wx.EXPAND)
 
-        tools = [more, screenshot, zax, zrange, panel]
+        tools = [more, screenshot, zax, movieMode, zrange, panel]
         
         self.SetTools(tools) 
 
diff --git a/fsl/fsleyes/controls/orthotoolbar.py b/fsl/fsleyes/controls/orthotoolbar.py
index c9c18502a65093f7149c3fdbaa3a483bf35ef8f5..7e5655dc84d2df1a720fb52748590892937b99d6 100644
--- a/fsl/fsleyes/controls/orthotoolbar.py
+++ b/fsl/fsleyes/controls/orthotoolbar.py
@@ -46,6 +46,7 @@ class OrthoToolBar(fsltoolbar.FSLEyesToolBar):
 
         icons = {
             'screenshot'  : fslicons.findImageFile('camera24'),
+            'movieMode'   : fslicons.findImageFile('movie24'),
             'showXCanvas' : fslicons.findImageFile('sagittalSlice24'),
             'showYCanvas' : fslicons.findImageFile('coronalSlice24'),
             'showZCanvas' : fslicons.findImageFile('axialSlice24'),
@@ -63,6 +64,7 @@ class OrthoToolBar(fsltoolbar.FSLEyesToolBar):
 
         tooltips = {
             'screenshot'   : fsltooltips.actions[   ortho,     'screenshot'],
+            'movieMode'    : fsltooltips.properties[ortho,     'movieMode'],
             'zoom'         : fsltooltips.properties[orthoOpts, 'zoom'],
             'layout'       : fsltooltips.properties[orthoOpts, 'layout'],
             'showXCanvas'  : fsltooltips.properties[orthoOpts, 'showXCanvas'],
@@ -74,6 +76,7 @@ class OrthoToolBar(fsltoolbar.FSLEyesToolBar):
         }
         
         targets    = {'screenshot'   : ortho,
+                      'movieMode'    : ortho,
                       'zoom'         : orthoOpts,
                       'layout'       : orthoOpts,
                       'showXCanvas'  : orthoOpts,
@@ -104,6 +107,9 @@ class OrthoToolBar(fsltoolbar.FSLEyesToolBar):
             props  .Widget(      'layout',
                                  icons=icons['layout'],
                                  tooltip=tooltips['layout']),
+            props  .Widget(      'movieMode', 
+                                 icon=icons['movieMode'],
+                                 tooltip=tooltips['movieMode']), 
             actions.ActionButton('resetZoom',
                                  icon=icons['resetZoom'],
                                  tooltip=tooltips['resetZoom']),
diff --git a/fsl/fsleyes/icons/movie24.png b/fsl/fsleyes/icons/movie24.png
new file mode 100644
index 0000000000000000000000000000000000000000..b710e44d0c71ddb8f30f0f05ad7af3cf2b11fb22
Binary files /dev/null and b/fsl/fsleyes/icons/movie24.png differ
diff --git a/fsl/fsleyes/icons/movie24@2x.png b/fsl/fsleyes/icons/movie24@2x.png
new file mode 100644
index 0000000000000000000000000000000000000000..385ebdf90140af30fd8ce707936a9b1f4f89a8aa
Binary files /dev/null and b/fsl/fsleyes/icons/movie24@2x.png differ
diff --git a/fsl/fsleyes/icons/sources/movie.xcf b/fsl/fsleyes/icons/sources/movie.xcf
new file mode 100644
index 0000000000000000000000000000000000000000..a0ee9daf4b901adb82218b4d1881761f11c8cdff
Binary files /dev/null and b/fsl/fsleyes/icons/sources/movie.xcf differ
diff --git a/fsl/fsleyes/views/canvaspanel.py b/fsl/fsleyes/views/canvaspanel.py
index c56dceeea8f53a914ed11f0beb13c1e0e213fab2..b422a36aa4cae831cbffbefce24782aa58e04764 100644
--- a/fsl/fsleyes/views/canvaspanel.py
+++ b/fsl/fsleyes/views/canvaspanel.py
@@ -44,9 +44,13 @@ class CanvasPanel(viewpanel.ViewPanel):
     syncOverlayOrder   = props.Boolean(default=True)
     syncOverlayDisplay = props.Boolean(default=True)
     movieMode          = props.Boolean(default=False)
+
+    # Movie update rate in milliseconds - this is
+    # inverted so that a high value corresponds to
+    # a fast rate.
     movieRate          = props.Int(minval=100,
                                    maxval=1000,
-                                   default=250,
+                                   default=750,
                                    clamped=True)
     
 
@@ -271,10 +275,16 @@ class CanvasPanel(viewpanel.ViewPanel):
 
         if not self.movieMode:
             return
+
+        rate    = self.movieRate
+        rateMin = self.getConstraint('movieRate', 'minval')
+        rateMax = self.getConstraint('movieRate', 'maxval')
+
+        rate = rateMin + (rateMax - rate) 
         
         self.__movieTimer = wx.Timer(self)
         self.Bind(wx.EVT_TIMER, self.__movieUpdate)
-        self.__movieTimer.Start(self.movieRate)
+        self.__movieTimer.Start(rate)
         
 
     def __movieRateChanged(self, *a):