diff --git a/indra/llrender/llshadermgr.cpp b/indra/llrender/llshadermgr.cpp
index bce3720d3b16017432d8f14b416b8aa9b76fc5dd..dcb34c676148c7c98d1ad4637d80f5b371b2d017 100644
--- a/indra/llrender/llshadermgr.cpp
+++ b/indra/llrender/llshadermgr.cpp
@@ -570,9 +570,20 @@ static std::string get_object_log(GLhandleARB ret)
 //dump shader source for debugging
 void LLShaderMgr::dumpShaderSource(U32 shader_code_count, GLcharARB** shader_code_text)
 {	
-	for (GLuint i = 0; i < shader_code_count; i++)
+	for (U32 i = 0; i < shader_code_count; i++)
 	{
+		GLcharARB *line = shader_code_text[i];
+		size_t     len  = strlen( line );
+		char       last = len > 0 ? line[len - 1] : 0;
+
+		// LL_ENDL already outputs a newline so temporarily strip off the end newline to prevent EVERY line outputting an (extra) blank line
+		if (last == '\n')
+		    line[len - 1] = 0;
+
 		LL_SHADER_LOADING_WARNS() << i << ": " << shader_code_text[i] << LL_ENDL;
+
+		if (last == '\n')
+			line[len - 1] = '\n';
 	}
     LL_SHADER_LOADING_WARNS() << LL_ENDL;
 }