diff --git a/src/main/java/bdv/jogl/VolumeRenderer/ShaderPrograms/AbstractShaderSceneElement.java b/src/main/java/bdv/jogl/VolumeRenderer/ShaderPrograms/AbstractShaderSceneElement.java
index 939e0caf92e5e40a88d629f3ae4051f00deb1939..e7b6ae2edfa9a42d7395f23581ebc23a5b065c33 100644
--- a/src/main/java/bdv/jogl/VolumeRenderer/ShaderPrograms/AbstractShaderSceneElement.java
+++ b/src/main/java/bdv/jogl/VolumeRenderer/ShaderPrograms/AbstractShaderSceneElement.java
@@ -231,6 +231,16 @@ public abstract class AbstractShaderSceneElement implements ISceneElements{
 		return shaderVariableMapping.get(variableName);
 	}
 
+	protected int getLocationSafe(GL4 gl2, final String variableName){
+		Integer i = shaderVariableMapping.get(variableName);
+		if ( i != null )
+			return i;
+
+		int location = gl2.glGetUniformLocation(shaderProgram.program(), variableName);
+		shaderVariableMapping.put(variableName, location);
+		return location;
+	}
+
 
 	/**
 	 * Sub class uniform upload
diff --git a/src/main/java/bdv/jogl/VolumeRenderer/ShaderPrograms/MultiVolumeRenderer.java b/src/main/java/bdv/jogl/VolumeRenderer/ShaderPrograms/MultiVolumeRenderer.java
index cb6ed582707c992f7042bfecca6087bc1d66dd6a..09179bcb84c17b8b651a8b43237d5f1b80a11d28 100644
--- a/src/main/java/bdv/jogl/VolumeRenderer/ShaderPrograms/MultiVolumeRenderer.java
+++ b/src/main/java/bdv/jogl/VolumeRenderer/ShaderPrograms/MultiVolumeRenderer.java
@@ -441,7 +441,7 @@ public class MultiVolumeRenderer extends AbstractShaderSceneElement{
 
 			Matrix4 localInverse = copyMatrix(calcVolumeTransformation(data));
 			localInverse.invert();
-			gl2.glUniformMatrix4fv(getLocation(suvTextureTransformationInverse)+index,
+			gl2.glUniformMatrix4fv(getLocationSafe(gl2, suvTextureTransformationInverse+"["+index+"]"),
 					1,false,localInverse.getMatrix(),0);
 		}
 	}