diff --git a/src/map.cpp b/src/map.cpp
index ac29cfeeeac786a87e388666e4fcbff0df008e50..40950423233a417a44de6f605076988218fcf86d 100644
--- a/src/map.cpp
+++ b/src/map.cpp
@@ -1732,11 +1732,14 @@ void Map::transformLiquids(std::map<v3s16, MapBlock*> & modified_blocks)
 						if (nb.t != NEIGHBOR_UPPER && liquid_type != LIQUID_NONE)
 							m_transforming_liquid.push_back(npos);
 						// if the current node happens to be a flowing node, it will start to flow down here.
-						if (nb.t == NEIGHBOR_LOWER) {
+						if (nb.t == NEIGHBOR_LOWER)
 							flowing_down = true;
-						}
 					} else {
 						neutrals[num_neutrals++] = nb;
+						// If neutral below is ignore prevent water spreading outwards
+						if (nb.t == NEIGHBOR_LOWER &&
+								nb.n.getContent() == CONTENT_IGNORE)
+							flowing_down = true;
 					}
 					break;
 				case LIQUID_SOURCE: