 	float fresnel = clamp(u_FresnelBias + pow(1.0 - dot(viewDir, normal), u_FresnelPower) *
 			u_FresnelScale, 0.0, 1.0);
 
-	vec3 refractColor = texture2D(u_CurrentMap, texScreen).rgb;
-	vec3 reflectColor = texture2D(u_PortalMap, texScreen).rgb;
-
+	vec3 refractColor;
+	vec4 reflectColor;
 	vec4 color;
 
-	color.rgb = mix(refractColor, reflectColor, fresnel);
+	refractColor = texture2D(u_CurrentMap, texScreen).rgb;
+	reflectColor.rgb = texture2D(u_PortalMap, texScreen).rgb;
+	reflectColor.a = 1.0;
+
+	color.rgb = mix(refractColor, reflectColor.rgb, fresnel);
 	color.a = 1.0;
 
 	if(u_FogDensity > 0.0)

	texNormal += texOffset;
#endif

	// compute normals
	vec3 N = normalize(var_Normal);

	// compute normal in world space from normalmap
	vec3 normal = NormalInWorldSpace(texNormal, tangentToWorldMatrix);


		color.rgb = mix(u_FogColor, color.rgb, fogFactor);
	}

	vec3 lightDir;
	vec3 ambientColor;
	vec3 lightColor;

	ReadLightGrid( (var_Position - u_LightGridOrigin) * u_LightGridScale,
		       lightDir, ambientColor, lightColor );

	vec4 diffuse = vec4(0.0, 0.0, 0.0, 1.0);

	// compute the specular term
	computeLight(lightDir, normal, viewDir, lightColor, diffuse, reflectColor, color);

	outputColor = color;
}
