diff --git a/source/core/rendering/scene/hw_drawinfo.cpp b/source/core/rendering/scene/hw_drawinfo.cpp
index c7e7744c0..7b245b125 100644
--- a/source/core/rendering/scene/hw_drawinfo.cpp
+++ b/source/core/rendering/scene/hw_drawinfo.cpp
@@ -540,6 +540,7 @@ void HWDrawInfo::RenderScene(FRenderState &state)
 	state.SetColorMask(true);
 
 	state.SetDepthBias(-1, -128);
+	drawlists[GLDL_MASKEDSLOPEFLATS].DrawFlats(this, state, false);
 	state.SetDepthMask(false);
 	drawlists[GLDL_MASKEDFLATS].DrawFlats(this, state, false);
 	state.SetDepthMask(true);
diff --git a/source/core/rendering/scene/hw_drawinfo.h b/source/core/rendering/scene/hw_drawinfo.h
index 503291694..70dde41b9 100644
--- a/source/core/rendering/scene/hw_drawinfo.h
+++ b/source/core/rendering/scene/hw_drawinfo.h
@@ -77,6 +77,7 @@ enum DrawListType
 	GLDL_MASKEDWALLSV,	// vertical wall sprites
 	GLDL_MASKEDWALLSH,  // horizontal wall sprites. These two lists merely exist for easier sorting.
 	GLDL_MASKEDFLATS,
+	GLDL_MASKEDSLOPEFLATS,
 	GLDL_MODELS,
 
 	GLDL_TRANSLUCENT,
diff --git a/source/core/rendering/scene/hw_drawlistadd.cpp b/source/core/rendering/scene/hw_drawlistadd.cpp
index 9c9ee3f2a..cee0ff943 100644
--- a/source/core/rendering/scene/hw_drawlistadd.cpp
+++ b/source/core/rendering/scene/hw_drawlistadd.cpp
@@ -104,7 +104,7 @@ void HWDrawInfo::AddFlat(HWFlat *flat)
 	}
 	else
 	{
-		list = flat->Sprite ? GLDL_MASKEDFLATS : GLDL_PLAINFLATS;
+		list = flat->Sprite ? ((flat->Sprite->clipdist & TSPR_SLOPESPRITE)? GLDL_MASKEDSLOPEFLATS : GLDL_MASKEDFLATS) : GLDL_PLAINFLATS;
 	}
 	auto newflat = drawlists[list].NewFlat(slopespr);
 	*newflat = *flat;