diff --git a/fsl/fslview/controls/atlasoverlaypanel.py b/fsl/fslview/controls/atlasoverlaypanel.py
index 20f2b03e4126f1279267680fc7b5a7bed1f60a7b..e0be7f2c228d859ed64d96a43558a5fb8ffcc109 100644
--- a/fsl/fslview/controls/atlasoverlaypanel.py
+++ b/fsl/fslview/controls/atlasoverlaypanel.py
@@ -13,10 +13,10 @@ import wx
 
 import pwidgets.elistbox as elistbox
 
-import fsl.data.atlases      as atlases
-import fsl.data.strings      as strings
-import fsl.utils.messagedlg  as msgdlg
-import fsl.fslview.panel     as fslpanel
+import fsl.data.atlases  as atlases
+import fsl.data.strings  as strings
+import fsl.utils.dialog  as dialog
+import fsl.fslview.panel as fslpanel
 
 
 log = logging.getLogger(__name__)
@@ -210,7 +210,7 @@ class AtlasOverlayPanel(fslpanel.FSLViewPanel):
 
                 self.__updateAtlasState(atlasIdx)
 
-            msgdlg.ProcessingDialog(
+            dialog.ProcessingDialog(
                 self,
                 strings.messages[self, 'loadRegions'].format(atlasDesc.name),
                 buildRegionList).Run()
diff --git a/fsl/fslview/gl/gl21/gllinevector_funcs.py b/fsl/fslview/gl/gl21/gllinevector_funcs.py
index 8b2b1bc1004fc5842d9405f0a847be22e1ff6675..678fe5f21b3b6309f70c0fd36a161764567c94b0 100644
--- a/fsl/fslview/gl/gl21/gllinevector_funcs.py
+++ b/fsl/fslview/gl/gl21/gllinevector_funcs.py
@@ -23,11 +23,15 @@ log = logging.getLogger(__name__)
 
 def init(self):
     
-    self.shaders        = None
-    self.vertexBuffer   = gl.glGenBuffers(1)
-    self.texCoordBuffer = gl.glGenBuffers(1)
-    self.vertexIDBuffer = gl.glGenBuffers(1)
-    self.lineVertices   = None
+    self.shaders            = None
+    self.vertexBuffer       = gl.glGenBuffers(1)
+    self.texCoordBuffer     = gl.glGenBuffers(1)
+    self.vertexIDBuffer     = gl.glGenBuffers(1)
+    self.lineVertices       = None
+
+    # False -> hardware shaders are in use
+    # True  -> software shaders are in use
+    self.swShadersInUse = False
 
     self._vertexResourceName = '{}_{}_vertices'.format(
         type(self).__name__, id(self.image))
@@ -40,7 +44,6 @@ def init(self):
         self.updateShaderState()
         self.onUpdate()
 
-
     name = '{}_vertices'.format(self.name)
 
     opts.addListener('transform',  name, vertexUpdate, weak=False)
@@ -78,6 +81,8 @@ def compileShaders(self):
     
     self.shaders = shaders.compileShaders(vertShaderSrc, fragShaderSrc)
 
+    self.swShadersInUse     = self.display.softwareMode
+
     self.vertexPos          = gl.glGetAttribLocation( self.shaders,
                                                       'vertex')
     self.vertexIDPos        = gl.glGetAttribLocation( self.shaders,
@@ -211,6 +216,11 @@ def draw(self, zpos, xform=None):
 
 def softwareDraw(self, zpos, xform=None):
 
+    # Software shaders have not yet been compiled - 
+    # we can't draw until they're updated
+    if not self.swShadersInUse:
+        return
+
     opts                = self.displayOpts
     vertices, texCoords = self.lineVertices.getVertices(self, zpos)
 
@@ -254,6 +264,9 @@ def softwareDraw(self, zpos, xform=None):
 
 def hardwareDraw(self, zpos, xform=None):
 
+    if self.swShadersInUse:
+        return
+
     image      = self.image
     opts       = self.displayOpts
     v2dMat     = opts.getTransform('voxel', 'display')
diff --git a/fsl/fslview/gl/glrgbvector.py b/fsl/fslview/gl/glrgbvector.py
index a30c5475172caf2943e0dd24c3b7f21f289e01c2..95a1e87ee3e2e184fe179341c726623d39524334 100644
--- a/fsl/fslview/gl/glrgbvector.py
+++ b/fsl/fslview/gl/glrgbvector.py
@@ -37,15 +37,23 @@ class GLRGBVector(glvector.GLVector):
         self.displayOpts.removeListener('interpolation', self.name)
         glvector.GLVector.destroy(self)
 
-        
-    def __interpChanged(self, *a):
 
+    def refreshImageTexture(self):
+        glvector.GLVector.refreshImageTexture(self)
+        self.__setInterp()
+
+        
+    def __setInterp(self):
         opts = self.displayOpts
 
         if opts.interpolation == 'none': interp = gl.GL_NEAREST
-        else:                            interp = gl.GL_LINEAR
-
+        else:                            interp = gl.GL_LINEAR 
+        
         self.imageTexture.set(interp=interp)
+
+        
+    def __interpChanged(self, *a):
+        self.__setInterp()
         self.updateShaderState()
         self.onUpdate()
 
diff --git a/fsl/fslview/gl/textures/rendertexture.py b/fsl/fslview/gl/textures/rendertexture.py
index a2afde5cae8610d4d57f546eeb1d29d5a338c90d..db49c50eb077c4fd8872010c6e0cc0017c8e1882 100644
--- a/fsl/fslview/gl/textures/rendertexture.py
+++ b/fsl/fslview/gl/textures/rendertexture.py
@@ -187,6 +187,8 @@ class RenderTexture(texture.Texture2D):
             
         if glfbo.glCheckFramebufferStatusEXT(glfbo.GL_FRAMEBUFFER_EXT) != \
            glfbo.GL_FRAMEBUFFER_COMPLETE_EXT:
+            self.unbindAsRenderTarget()
+            self.unbindTexture()            
             raise RuntimeError('An error has occurred while '
                                'configuring the frame buffer')
 
@@ -248,8 +250,8 @@ class GLObjectRenderTexture(RenderTexture):
 
         if width > maxRes or height > maxRes:
             oldWidth, oldHeight = width, height
-            ratio = min(width, height) / max(width, height)
-            
+            ratio = min(width, height) / float(max(width, height))
+
             if width > height:
                 width  = maxRes
                 height = width * ratio
diff --git a/fsl/tools/fslview_parseargs.py b/fsl/tools/fslview_parseargs.py
index 3919c467869786cf5c8a15bef68107110839f9b7..b0ef0ddd808372eee4e3c321c19a59d043b74273 100644
--- a/fsl/tools/fslview_parseargs.py
+++ b/fsl/tools/fslview_parseargs.py
@@ -515,13 +515,15 @@ def _configOverlayParser(ovlParser):
     configure the display of a single overlay.
     """
 
-    Display    = fsldisplay.Display
-    ImageOpts  = fsldisplay.ImageOpts
-    VolumeOpts = fsldisplay.VolumeOpts
-    VectorOpts = fsldisplay.VectorOpts
-    MaskOpts   = fsldisplay.MaskOpts
-    ModelOpts  = fsldisplay.ModelOpts
-    LabelOpts  = fsldisplay.LabelOpts
+    Display        = fsldisplay.Display
+    ImageOpts      = fsldisplay.ImageOpts
+    VolumeOpts     = fsldisplay.VolumeOpts
+    VectorOpts     = fsldisplay.VectorOpts
+    RGBVectorOpts  = fsldisplay.RGBVectorOpts
+    LineVectorOpts = fsldisplay.LineVectorOpts
+    MaskOpts       = fsldisplay.MaskOpts
+    ModelOpts      = fsldisplay.ModelOpts
+    LabelOpts      = fsldisplay.LabelOpts
     
     dispDesc = 'Each display option will be applied to the '\
                'overlay which is listed before that option.'
@@ -531,17 +533,21 @@ def _configOverlayParser(ovlParser):
     imgParser   = ovlParser.add_argument_group(GROUPNAMES[ImageOpts])
     volParser   = ovlParser.add_argument_group(GROUPNAMES[VolumeOpts])
     vecParser   = ovlParser.add_argument_group(GROUPNAMES[VectorOpts])
+    lvParser    = ovlParser.add_argument_group(GROUPNAMES[LineVectorOpts])
+    rvParser    = ovlParser.add_argument_group(GROUPNAMES[RGBVectorOpts])
     maskParser  = ovlParser.add_argument_group(GROUPNAMES[MaskOpts])
     modelParser = ovlParser.add_argument_group(GROUPNAMES[ModelOpts])
     labelParser = ovlParser.add_argument_group(GROUPNAMES[LabelOpts])
 
-    targets = [(Display,    dispParser),
-               (ImageOpts,  imgParser),
-               (VolumeOpts, volParser),
-               (VectorOpts, vecParser),
-               (MaskOpts,   maskParser),
-               (ModelOpts,  modelParser),
-               (LabelOpts,  labelParser)]
+    targets = [(Display,        dispParser),
+               (ImageOpts,      imgParser),
+               (VolumeOpts,     volParser),
+               (VectorOpts,     vecParser),
+               (LineVectorOpts, lvParser),
+               (RGBVectorOpts,  rvParser),
+               (MaskOpts,       maskParser),
+               (ModelOpts,      modelParser),
+               (LabelOpts,      labelParser)]
 
     for target, parser in targets:
 
diff --git a/fsl/utils/dialog.py b/fsl/utils/dialog.py
index 0910e00a1bebf854f4b8ffe70173fedacf9775cc..94779a5d24861e9776f035976e65fcc99c0478e5 100644
--- a/fsl/utils/dialog.py
+++ b/fsl/utils/dialog.py
@@ -29,7 +29,7 @@ class SimpleMessageDialog(wx.Dialog):
                          proportion=1,
                          flag=wx.CENTRE | wx.ALL)
 
-        self.SetBackgroundColour((250, 250, 225))
+        self.SetBackgroundColour((225, 225, 200))
         
         self.SetSizer(self.__sizer)
         self.SetMessage(message)