         vec2 env_brdf = textureLod(PrefilteredBRDF, vec2(NxV, m.roughness), 0).xy;
 
         vec3 material_f0 = get_material_f0(m);
-        vec3 specular_ambient = (material_f0 * env_brdf.x + env_brdf.y) * env_default_color;
+        vec3 specular_ambient = (material_f0 * env_brdf.x + env_brdf.y) * ibl_specular;
 
         // Diffuse ambient term
         // TODO: lambertian brdf doesn't look well?

        #endif

    } else {

        // Optionally just display the environment texture
        // ambient = textureLod(DefaultEnvmap,  fix_cubemap_coord(-view_vector), 0).xyz;
        // ambient = pow(ambient, vec3(2.2));

        // Get reflection directory
        vec3 reflected_dir = reflect(-view_vector, m.normal);

        // Bend normal depending on roughness
        float bend = m.roughness;
        reflected_dir = mix(m.normal, reflected_dir, 
            (1 - bend) * (bend + sqrt(1 - bend)));

        // Get environment coordinate, cubemaps have a different coordinate
        // system
        vec3 env_coord = fix_cubemap_coord(reflected_dir);

        // Compute angle between normal and view vector
