diff --git a/src/OpenGL/compiler/OutputASM.cpp b/src/OpenGL/compiler/OutputASM.cpp
index 428be87..782d2b0 100644
--- a/src/OpenGL/compiler/OutputASM.cpp
+++ b/src/OpenGL/compiler/OutputASM.cpp
@@ -91,11 +91,12 @@
 		registerIndex = 0;
 	}
 
-	Attribute::Attribute(GLenum type, const std::string &name, int arraySize, int registerIndex)
+	Attribute::Attribute(GLenum type, const std::string &name, int arraySize, int location, int registerIndex)
 	{
 		this->type = type;
 		this->name = name;
 		this->arraySize = arraySize;
+		this->location = location;
 		this->registerIndex = registerIndex;
 	}
 
@@ -2232,7 +2233,7 @@
 				ActiveAttributes &activeAttributes = shaderObject->activeAttributes;
 
 				const char *name = symbol->getSymbol().c_str();
-				activeAttributes.push_back(Attribute(glVariableType(type), name, 0, index));
+				activeAttributes.push_back(Attribute(glVariableType(type), name, type.getArraySize(), type.getLayoutQualifier().location, index));
 			}
 		}
 
diff --git a/src/OpenGL/compiler/OutputASM.h b/src/OpenGL/compiler/OutputASM.h
index 5cbf4dd..43b0bd2 100644
--- a/src/OpenGL/compiler/OutputASM.h
+++ b/src/OpenGL/compiler/OutputASM.h
@@ -47,11 +47,12 @@
 	struct Attribute
 	{
 		Attribute();
-		Attribute(GLenum type, const std::string &name, int arraySize, int registerIndex);
+		Attribute(GLenum type, const std::string &name, int arraySize, int location, int registerIndex);
 
 		GLenum type;
 		std::string name;
 		int arraySize;
+		int location;
 	
 		int registerIndex;
 	};
diff --git a/src/OpenGL/libGLESv2/Program.cpp b/src/OpenGL/libGLESv2/Program.cpp
index 0dc03f5..1cb028a 100644
--- a/src/OpenGL/libGLESv2/Program.cpp
+++ b/src/OpenGL/libGLESv2/Program.cpp
@@ -1259,7 +1259,7 @@
 		// Link attributes that have a binding location
 		for(glsl::ActiveAttributes::iterator attribute = vertexShader->activeAttributes.begin(); attribute != vertexShader->activeAttributes.end(); ++attribute)
 		{
-			int location = getAttributeBinding(attribute->name);
+			int location = getAttributeBinding(*attribute);
 
 			if(location != -1)   // Set by glBindAttribLocation
 			{
@@ -1288,7 +1288,7 @@
 		// Link attributes that don't have a binding location
 		for(glsl::ActiveAttributes::iterator attribute = vertexShader->activeAttributes.begin(); attribute != vertexShader->activeAttributes.end(); ++attribute)
 		{
-			int location = getAttributeBinding(attribute->name);
+			int location = getAttributeBinding(*attribute);
 
 			if(location == -1)   // Not set by glBindAttribLocation
 			{
@@ -1319,11 +1319,16 @@
 		return true;
 	}
 
-	int Program::getAttributeBinding(const std::string &name)
+	int Program::getAttributeBinding(const glsl::Attribute &attribute)
 	{
+		if(attribute.location != -1)
+		{
+			return attribute.location;
+		}
+
 		for(int location = 0; location < MAX_VERTEX_ATTRIBS; location++)
 		{
-			if(attributeBinding[location].find(name) != attributeBinding[location].end())
+			if(attributeBinding[location].find(attribute.name.c_str()) != attributeBinding[location].end())
 			{
 				return location;
 			}
diff --git a/src/OpenGL/libGLESv2/Program.h b/src/OpenGL/libGLESv2/Program.h
index 0037e05..48d691d 100644
--- a/src/OpenGL/libGLESv2/Program.h
+++ b/src/OpenGL/libGLESv2/Program.h
@@ -222,7 +222,7 @@
 		bool gatherTransformFeedbackLinkedVaryings();
 
 		bool linkAttributes();
-		int getAttributeBinding(const std::string &name);
+		int getAttributeBinding(const glsl::Attribute &attribute);
 
 		bool linkUniforms(const Shader *shader);
 		bool defineUniform(GLenum shader, GLenum type, GLenum precision, const std::string &_name, unsigned int arraySize, int registerIndex);
