diff --git a/src/map.cpp b/src/map.cpp
index ff57e8d90a0c7c39dda53b84dd284df498ef34b4..8bc914cfd82221f172a53c7be1fc881805727287 100644
--- a/src/map.cpp
+++ b/src/map.cpp
@@ -1961,9 +1961,10 @@ MapBlock * ServerMap::emergeBlock(
 		Add some minerals
 	*/
 
-	if(is_underground)
+	//if(is_underground)
+	if(some_part_underground)
 	{
-		s16 underground_level = lowest_ground_y/MAP_BLOCKSIZE - block_y;
+		s16 underground_level = (lowest_ground_y/MAP_BLOCKSIZE - block_y)+1;
 		for(s16 i=0; i<underground_level*3; i++)
 		{
 			if(rand()%2 == 0)
@@ -1977,13 +1978,15 @@ MapBlock * ServerMap::emergeBlock(
 				MapNode n;
 				n.d = CONTENT_MESE;
 				
-				if(is_ground_content(block->getNode(cp).d))
+				//if(is_ground_content(block->getNode(cp).d))
+				if(block->getNode(cp).d == CONTENT_STONE)
 					if(rand()%8 == 0)
 						block->setNode(cp, n);
 
 				for(u16 i=0; i<26; i++)
 				{
-					if(is_ground_content(block->getNode(cp+g_26dirs[i]).d))
+					//if(is_ground_content(block->getNode(cp+g_26dirs[i]).d))
+					if(block->getNode(cp+g_26dirs[i]).d == CONTENT_STONE)
 						if(rand()%8 == 0)
 							block->setNode(cp+g_26dirs[i], n);
 				}
diff --git a/src/mapblock.cpp b/src/mapblock.cpp
index 033c69cdbc19196d7c3f40d7009a5375c7fa32e9..7500143c037b5e5d35162f182f52e7893f378e3d 100644
--- a/src/mapblock.cpp
+++ b/src/mapblock.cpp
@@ -162,9 +162,15 @@ u8 MapBlock::getFaceLight(v3s16 p, v3s16 face_dir)
 			light = n2.getLight();
 
 		// Make some nice difference to different sides
-		if(face_dir.X == 1 || face_dir.Z == 1 || face_dir.Y == -1)
+
+		/*if(face_dir.X == 1 || face_dir.Z == 1 || face_dir.Y == -1)
 			light = diminish_light(diminish_light(light));
 		else if(face_dir.X == -1 || face_dir.Z == -1)
+			light = diminish_light(light);*/
+
+		if(face_dir.X == 1 || face_dir.X == -1 || face_dir.Y == -1)
+			light = diminish_light(diminish_light(light));
+		else if(face_dir.Z == 1 || face_dir.Z == -1)
 			light = diminish_light(light);
 
 		return light;
@@ -832,13 +838,13 @@ void MapBlock::serialize(std::ostream &os, u8 version)
 		}
 		compress(materialdata, os, version);
 
-		// Get and compress params
-		SharedBuffer<u8> paramdata(nodecount);
+		// Get and compress lights
+		SharedBuffer<u8> lightdata(nodecount);
 		for(u32 i=0; i<nodecount; i++)
 		{
-			paramdata[i] = data[i].param;
+			lightdata[i] = data[i].param;
 		}
-		compress(paramdata, os, version);
+		compress(lightdata, os, version);
 		
 		if(version >= 10)
 		{
diff --git a/src/test.cpp b/src/test.cpp
index 726930ce69f01495124e49c404af617ef69ff0a8..6d71566f476dad6afef360d2b242f44cbe841439 100644
--- a/src/test.cpp
+++ b/src/test.cpp
@@ -461,7 +461,8 @@ struct TestMapBlock
 			assert(b.getFaceLight(p, v3s16(0,-1,0)) == 0);
 			// According to MapBlock::getFaceLight,
 			// The face on the z+ side should have double-diminished light
-			assert(b.getFaceLight(p, v3s16(0,0,1)) == diminish_light(diminish_light(LIGHT_MAX)));
+			//assert(b.getFaceLight(p, v3s16(0,0,1)) == diminish_light(diminish_light(LIGHT_MAX)));
+			assert(b.getFaceLight(p, v3s16(0,0,1)) == diminish_light(LIGHT_MAX));
 		}
 		/*
 			Check how the block handles being in between blocks with some non-sunlight