diff --git a/output.png b/output.png
index 025eabd..3280332 100644
Binary files a/output.png and b/output.png differ
diff --git a/src/shader/shaders.c b/src/shader/shaders.c
index d73ae7f..e5eb4bd 100644
--- a/src/shader/shaders.c
+++ b/src/shader/shaders.c
@@ -21,10 +21,10 @@ ShaderID orthographic_albedo = {0};
 internal Shader perspective = {0};
 internal Shader orthographic = {0};
 
-internal V3f g_ambient_light = {0.3f, 0.75f, 0.15f};
+internal V3f g_ambient_light = {0.6f, 0.45f, 0.55f};
 internal DirectionalLight g_directional_light = {
-    .diffuse_intensity = {0.9f, 0.8f, 0.6f},
-    .specular_intensity = {0.5f, 0.8f, 2.0f},
+    .diffuse_intensity = {0.9f, 1.0f, 1.0f},
+    .specular_intensity = {1.0f, 0.8f, 2.0f},
     .direction = {0.0f, 0.0f, 1.5f},
 };
 internal V3f g_eye = {0.2f, 0.1f, 0.75f};
@@ -147,14 +147,15 @@ internal FragmentResult phong_shader_fragment(void *shader,
   // Specular term
   V3f _2_l_dot_n_norm = num_mul_v3(norm, 2.0f * l_dot_n);
   V3f reflected = sub_v3(_2_l_dot_n_norm, light_dir);
-  f32 r_dot_v = dot_v3(reflected, data->position);
+  V3f v = sub_v3(g_eye, data->position);
+  f32 r_dot_v = dot_v3(reflected, v);
   if (r_dot_v <= 0.0f) {
     goto RETURN_OUTPUT_COLOUR;
   }
 
-  V3f specular = num_mul_v3(
-      g_directional_light.specular_intensity,
-      powf(model->material.specular * r_dot_v, model->material.shininess));
+  V3f specular = num_mul_v3(g_directional_light.specular_intensity,
+                            model->material.specular *
+                                powf(r_dot_v, model->material.shininess));
   intensity = add_v3(intensity, specular);
 
 RETURN_OUTPUT_COLOUR: