diff --git a/src/content_abm.cpp b/src/content_abm.cpp
index 9e65a7ab0a5c12c772a88754c14575abe7a482bc..ce1751117630d7b84488dde3dc93d84595fe17a2 100644
--- a/src/content_abm.cpp
+++ b/src/content_abm.cpp
@@ -80,7 +80,8 @@ class RemoveGrassABM : public ActiveBlockModifier
 		ServerMap *map = &env->getServerMap();
 		
 		MapNode n_top = map->getNodeNoEx(p+v3s16(0,1,0));
-		if(!ndef->get(n_top).light_propagates ||
+		if((!ndef->get(n_top).light_propagates &&
+				n_top.getContent() != CONTENT_IGNORE) ||
 				ndef->get(n_top).isLiquid())
 		{
 			n.setContent(ndef->getId("mapgen_dirt"));