diff --git a/2.png b/2.png
index a4930f70c5490e930d75e078e8eea0d619046e44..e49820962237b27447f2b35c1ab4a7363621c506 100644
Binary files a/2.png and b/2.png differ
diff --git a/main b/main
index 5595c74b405ef063a25f4cc3473dd2b77208437f..20a13ddc1a0d4c04053bdb5042676604a6b2bf22 100755
Binary files a/main and b/main differ
diff --git a/main.cpp b/main.cpp
index ccea6f982cc04d275c7727b271b51ae1a2d07a8a..71016f07b6f826ab547e2715ccb67e6d4780eaf6 100644
--- a/main.cpp
+++ b/main.cpp
@@ -150,7 +150,7 @@ int main()
 		Material white(255, 255, 255, 0);
 		Material grey(122, 122, 122, 0);
 		Material black(0, 0, 0, 0);
-		Material mirror(255, 255, 255, 0.9);
+		Material mirror(0, 0, 0, 0.9);
 
 		int nb_shapes = 7;
 		float width = 100; //x
diff --git a/scene.cpp b/scene.cpp
index f8c584d252f37bad24161708687db13bfbe89b59..26df48bc415f1b50013e57de7d2694f0a452a3c7 100644
--- a/scene.cpp
+++ b/scene.cpp
@@ -226,7 +226,7 @@ void Scene::render(int width, int height, int nb_pixel_row, int nb_pixel_col, in
 	float min_dist;
 	float hit_dist;
 
-	int ref_max=3;
+	int ref_max=4;
 	Ray3f *ray[ref_max];
 	float shine[ref_max-1];
 	float coef[ref_max-1];
@@ -236,7 +236,6 @@ void Scene::render(int width, int height, int nb_pixel_row, int nb_pixel_col, in
 	{
 		for (int j=0; j<nb_pixel_row; j++)
 		{
-			min_dist = 1000;
 			Vector3f Pij(j*pw, i*ph, 0); //point de la grille par laquelle on regarde
 			Ray3f camera_to_grid(camera_.position(), Pij-camera_.position());
 			ray[0]=new Ray3f(camera_to_grid);
@@ -244,20 +243,19 @@ void Scene::render(int width, int height, int nb_pixel_row, int nb_pixel_col, in
 			nb_reflected(ray, nb_shapes, ref_max, shine);
 			coeff(shine, coef, ref_max);
 
-
-
 			row[3*(nb_pixel_row-1-j)] = 0;
 			row[3*(nb_pixel_row-1-j) + 1] = 0;
 			row[3*(nb_pixel_row-1-j) + 2] = 0;
 
 			for(int r=0;r<ref_max-1;r++)
 			{
+				min_dist = 1000;
 				for (int k=0; k<nb_shapes; k++)
 				{
 					if (shapes_[k]->is_hit(*ray[r]))
 					{
 						Ray3f reflected(shapes_[k]->reflect(*ray[r]));
-						hit_dist = dist(reflected.origin() , camera_.position());
+						hit_dist = dist(reflected.origin() , ray[r]->origin());
 
 						if ( hit_dist < min_dist ) //on regarde l'objet le plus proche de la caméra
 						{
@@ -288,6 +286,7 @@ void Scene::render(int width, int height, int nb_pixel_row, int nb_pixel_col, in
 								row[3*(nb_pixel_row-1-j)] = row[3*(nb_pixel_row-1-j)] + coef[r]*fmin(50, 50*intensity);
 								row[3*(nb_pixel_row-1-j) + 1] = row[3*(nb_pixel_row-1-j) + 1] + coef[r]*fmin(50, 50*intensity);
 								row[3*(nb_pixel_row-1-j) + 2] = row[3*(nb_pixel_row-1-j) + 2] + coef[r]*fmin(50, 50*intensity);
+
 							}
 
 							else
@@ -301,6 +300,7 @@ void Scene::render(int width, int height, int nb_pixel_row, int nb_pixel_col, in
 									row[3*(nb_pixel_row-1-j)] = row[3*(nb_pixel_row-1-j)] + coef[r]*fmin(shapes_[k]->matter().r()/2. * intensity, shapes_[k]->matter().r()/2.);
 									row[3*(nb_pixel_row-1-j) + 1] =row[3*(nb_pixel_row-1-j) + 1] + coef[r]*fmin(shapes_[k]->matter().g()/2. * intensity, shapes_[k]->matter().g()/2.);
 									row[3*(nb_pixel_row-1-j) + 2] =row[3*(nb_pixel_row-1-j) + 2] + coef[r]*fmin(shapes_[k]->matter().b()/2. * intensity, shapes_[k]->matter().b()/2.);
+
 								}
 
 								else //il faut rajouter la réflexion et l'angle
@@ -308,6 +308,7 @@ void Scene::render(int width, int height, int nb_pixel_row, int nb_pixel_col, in
 									row[3*(nb_pixel_row-1-j)] = row[3*(nb_pixel_row-1-j)] + coef[r]*fmin(shapes_[k]->matter().r() * intensity, 255.);
 									row[3*(nb_pixel_row-1-j) + 1] = row[3*(nb_pixel_row-1-j) + 1] + coef[r]*fmin(shapes_[k]->matter().g() * intensity, 255.);
 									row[3*(nb_pixel_row-1-j) + 2] = row[3*(nb_pixel_row-1-j) + 2] + coef[r]*fmin(shapes_[k]->matter().b() * intensity, 255.);
+
 								}
 							}
 						}