diff --git a/apps/specular_estimation/CMakeFiles/specular_estimation.dir/src/specular_estimation.cc.o b/apps/specular_estimation/CMakeFiles/specular_estimation.dir/src/specular_estimation.cc.o
index 6366ea4e3572f96d965170748cf00a206f339372..9ecf6cab6cfa8cdfd8ae23ec22cc01d1b1e52bd8 100644
Binary files a/apps/specular_estimation/CMakeFiles/specular_estimation.dir/src/specular_estimation.cc.o and b/apps/specular_estimation/CMakeFiles/specular_estimation.dir/src/specular_estimation.cc.o differ
diff --git a/apps/specular_estimation/src/Ceres.h b/apps/specular_estimation/src/Ceres.h
index 5f0dde9f2aceb0a692f49e120cccc4dbc88e966d..35019ecad6a2c6ce3120abe3c97cef5c6d5c44ac 100644
--- a/apps/specular_estimation/src/Ceres.h
+++ b/apps/specular_estimation/src/Ceres.h
@@ -98,7 +98,7 @@ void specularMinimisation(double& SpecularIntensity, double& SpecularPower, doub
 
 	problem.SetParameterLowerBound(&SpecularIntensity, 0, 0);
 	problem.SetParameterUpperBound(&SpecularIntensity, 0, 1);
-	problem.SetParameterLowerBound(&SpecularPower, 0, 0);
+	problem.SetParameterLowerBound(&SpecularPower, 0, 1);
 
 	// Run the solver!
 	Solver::Options options;
diff --git a/apps/specular_estimation/src/OpenGL.h b/apps/specular_estimation/src/OpenGL.h
index 4cb103a2e93ffe9b128e3dc42a858b30c1a4a2aa..2a95e16e70173a46f97578759c7bd7067d71da52 100644
--- a/apps/specular_estimation/src/OpenGL.h
+++ b/apps/specular_estimation/src/OpenGL.h
@@ -536,7 +536,7 @@ void computeResidual(int imageNumber, int windowHeight, int windowWidth, std::st
 	sum = cv::sum(residual)[0];
 	*/
 	
-	std::cout << "Image " << imageNumber << ", SSD per pixel: R = " << cv::sum(sumOfSquaredDifferences)[2]/(windowHeight * windowWidth) << ", G = " << cv::sum(sumOfSquaredDifferences)[1]/(windowHeight * windowWidth) << ", B = " << cv::sum(sumOfSquaredDifferences)[0]/(windowHeight * windowWidth) << ", specular intensity = " << SpecularIntensity << ", specular power = " << SpecularPower << std::endl;
+	//std::cout << "Image " << imageNumber << ", SSD per pixel: R = " << cv::sum(sumOfSquaredDifferences)[2]/(windowHeight * windowWidth) << ", G = " << cv::sum(sumOfSquaredDifferences)[1]/(windowHeight * windowWidth) << ", B = " << cv::sum(sumOfSquaredDifferences)[0]/(windowHeight * windowWidth) << ", specular intensity = " << SpecularIntensity << ", specular power = " << SpecularPower << std::endl;
 	//std::cout << "Image " << imageNumber << ", average sum of squared differences: R = " << sum << ", specular intensity = " << SpecularIntensity << ", specular power = " << SpecularPower << std::endl;
 }
 
@@ -787,8 +787,8 @@ void computeMatricesFromLights(int windowWidth, int windowHeight, glm::vec3& pos
 		}
 	}
 
-	lightInvDir = glm::vec3(lightDirections.at<float>(lightNumber, 0), -lightDirections.at<float>(lightNumber, 2), lightDirections.at<float>(lightNumber, 1));
-	//lightInvDir = glm::vec3(lightDirections.at<float>(lightNumber, 0), lightDirections.at<float>(lightNumber, 1), lightDirections.at<float>(lightNumber, 2));
+	lightInvDir = glm::vec3(lightDirections.at<float>(lightNumber, 0)+0.5, -lightDirections.at<float>(lightNumber, 2), lightDirections.at<float>(lightNumber, 1)+0.5);
+	//lightInvDir = glm::vec3(lightDirections.at<float>(lightNumber, 0), -lightDirections.at<float>(lightNumber, 2), lightDirections.at<float>(lightNumber, 1));
 	
 	
 	// Modify specular power
diff --git a/apps/specular_estimation/src/specular_estimation.cc b/apps/specular_estimation/src/specular_estimation.cc
index fb416b479c8b4e9858f49ab3ead2304216de7b00..9497f3af9dde90517d281868151bba3ebfc894db 100644
--- a/apps/specular_estimation/src/specular_estimation.cc
+++ b/apps/specular_estimation/src/specular_estimation.cc
@@ -217,7 +217,7 @@ int main(int argc, char** argv) {
 
 	std::vector<glm::vec3> lightInvDirs;
 	for (int i = 0; i < numberOfLights; i++)
-		lightInvDirs.push_back(glm::vec3(lightDirections.at<float>(i, 0), -lightDirections.at<float>(i, 2), lightDirections.at<float>(i, 1)));
+		lightInvDirs.push_back(glm::vec3(lightDirections.at<float>(i, 0)+0.5, -lightDirections.at<float>(i, 2), lightDirections.at<float>(i, 1)+0.5));
 	
 	initialiseOpenGL(heightMap, normalMap, texture, textureImages, lightDirections, width, height, depthProjectionMatrix, depthViewMatrix, position, horizontalAngle, verticalAngle, FoV, lightInvDir, programID, MatrixID, ModelMatrixID, ViewMatrixID, DepthBiasID, lightInvDirID, Texture, TextureID, depthTexture, ShadowMapID, vertexbuffer, uvbuffer, normalbuffer, elementbuffer, indices, depthProgramID, quad_programID, FramebufferName, quad_vertexbuffer, VertexArrayID, SpecularIntensityID, SpecularIntensity, SpecularPowerID, SpecularPower, numberOfLights, calculateResidual, depthMVP, depthModelMatrix, MVP, ProjectionMatrix, ViewMatrix, ModelMatrix, depthBiasMVP, biasMatrix);
 	
diff --git a/bin/specular_estimation b/bin/specular_estimation
index 24ec1e8dbaf9d4d69c72a136c58bd0ebb3a7045a..7cecd8ab6fc2f20a5dd472b69c8e3fb897ec1800 100755
Binary files a/bin/specular_estimation and b/bin/specular_estimation differ