             
 			// compute reflected vector
 			var cWorldCameraPosition	: SFloat = this.cameraPosition;
-			var vsWorldVertexToCamera	: SFloat = normalize(subtract(cWorldCameraPosition, vsWorldPosition));
-			var reflected				: SFloat = normalize(interpolate(reflect(vsWorldNormal.xyzz, vsWorldVertexToCamera.xyzz)));
+			var vsWorldVertexToCamera	: SFloat = normalize(subtract(vsWorldPosition, cWorldCameraPosition));
+			var reflected				: SFloat = normalize(interpolate(reflect(vsWorldVertexToCamera.xyzz, vsWorldNormal.xyzz)));
 			var reflectionType 			: int	 = meshBindings.getProperty(
 				EnvironmentMappingProperties.ENVIRONMENT_MAPPING_TYPE
 			);

package aerys.minko.render.shader.part.environment
{
	import aerys.minko.render.material.environment.EnvironmentMappingProperties;
	import aerys.minko.render.shader.SFloat;
	import aerys.minko.render.shader.Shader;

	import aerys.minko.type.enum.SamplerFormat;
	import aerys.minko.type.enum.SamplerMipMapping;
	import aerys.minko.type.enum.SamplerWrapping;
	
	public class EnvironmentMappingShaderPart extends LightAwareShaderPart
	{
