diff --git a/src/p_spec.c b/src/p_spec.c
index b9343b4de09868176b744a8cc37ac3cc32c7f61f..dd0d7c6e91f986290b7be798a8332a7515536b78 100644
--- a/src/p_spec.c
+++ b/src/p_spec.c
@@ -6510,8 +6510,8 @@ void P_SpawnSpecials(boolean fromnetsave)
 				//Cutting options
 				if (ffloorflags & FOF_RENDERALL)
 				{
-					//If translucent or player can enter it, cut inner walls
-					if ((lines[i].args[1] < 255) || (lines[i].args[4] & TMFT_VISIBLEFROMINSIDE))
+					//If inside is visible, cut inner walls
+					if ((lines[i].args[1] < 255) || (lines[i].args[3] & TMFA_SPLAT) || (lines[i].args[4] & TMFT_VISIBLEFROMINSIDE))
 						ffloorflags |= FOF_CUTEXTRA|FOF_EXTRA;
 					else
 						ffloorflags |= FOF_CUTLEVEL;
@@ -6569,8 +6569,8 @@ void P_SpawnSpecials(boolean fromnetsave)
 				if (lines[i].args[4] & TMFC_SPLAT)
 					ffloorflags |= FOF_SPLAT;
 
-				//If translucent or player can enter it, cut inner walls
-				if (lines[i].args[1] < 0xff || (lines[i].args[3] & TMFT_VISIBLEFROMINSIDE))
+				//If inside is visible, cut inner walls
+				if (lines[i].args[1] < 0xff || (lines[i].args[3] & TMFT_VISIBLEFROMINSIDE) || (lines[i].args[4] & TMFC_SPLAT))
 					ffloorflags |= FOF_CUTEXTRA|FOF_EXTRA;
 				else
 					ffloorflags |= FOF_CUTLEVEL;
@@ -6633,8 +6633,8 @@ void P_SpawnSpecials(boolean fromnetsave)
 				//Cutting options
 				if (ffloorflags & FOF_RENDERALL)
 				{
-					//If translucent or player can enter it, cut inner walls
-					if ((lines[i].args[1] < 255) || (lines[i].args[4] & TMFT_VISIBLEFROMINSIDE))
+					//If inside is visible, cut inner walls
+					if ((lines[i].args[1] < 255) || (lines[i].args[3] & TMFA_SPLAT) || (lines[i].args[4] & TMFT_VISIBLEFROMINSIDE))
 						ffloorflags |= FOF_CUTEXTRA|FOF_EXTRA;
 					else
 						ffloorflags |= FOF_CUTLEVEL;