diff --git a/src/r_draw.c b/src/r_draw.c
index eb4dc412f10cf3a034f68667033cd1127368b3a5..d9ea942a2f22b301bdbd1762e0635f31ba085d6e 100644
--- a/src/r_draw.c
+++ b/src/r_draw.c
@@ -100,7 +100,10 @@ INT32 dc_numlights = 0, dc_maxlights, dc_texheight;
 INT32 ds_y, ds_x1, ds_x2;
 lighttable_t *ds_colormap;
 lighttable_t *ds_translation; // Lactozilla: Sprite splat drawer
+
 fixed_t ds_xfrac, ds_yfrac, ds_xstep, ds_ystep;
+INT32 ds_waterofs, ds_bgofs;
+
 UINT16 ds_flatwidth, ds_flatheight;
 boolean ds_powersoftwo;
 
diff --git a/src/r_draw.h b/src/r_draw.h
index fd40c76cef3dc3c3f0d5f3a56b55fb5a26694ca7..9957541ca33bcfd84c37b03f4375184a722da459 100644
--- a/src/r_draw.h
+++ b/src/r_draw.h
@@ -56,7 +56,10 @@ extern INT32 dc_texheight;
 extern INT32 ds_y, ds_x1, ds_x2;
 extern lighttable_t *ds_colormap;
 extern lighttable_t *ds_translation;
+
 extern fixed_t ds_xfrac, ds_yfrac, ds_xstep, ds_ystep;
+extern INT32 ds_waterofs, ds_bgofs;
+
 extern UINT16 ds_flatwidth, ds_flatheight;
 extern boolean ds_powersoftwo;
 
@@ -188,14 +191,9 @@ void R_DrawTiltedTranslucentFloorSprite_8(void);
 void R_CalcTiltedLighting(fixed_t start, fixed_t end);
 extern INT32 tiltlighting[MAXVIDWIDTH];
 
-#ifndef NOWATER
 void R_DrawTranslucentWaterSpan_8(void);
 void R_DrawTiltedTranslucentWaterSpan_8(void);
 
-extern INT32 ds_bgofs;
-extern INT32 ds_waterofs;
-#endif
-
 void R_DrawFogSpan_8(void);
 
 // Lactozilla: Non-powers-of-two
@@ -213,10 +211,8 @@ void R_DrawTranslucentFloorSprite_NPO2_8(void);
 void R_DrawTiltedFloorSprite_NPO2_8(void);
 void R_DrawTiltedTranslucentFloorSprite_NPO2_8(void);
 
-#ifndef NOWATER
 void R_DrawTranslucentWaterSpan_NPO2_8(void);
 void R_DrawTiltedTranslucentWaterSpan_NPO2_8(void);
-#endif
 
 #ifdef USEASM
 void ASMCALL R_DrawColumn_8_ASM(void);
diff --git a/src/r_draw8.c b/src/r_draw8.c
index c28a25cbca40e4b4456c20a81741a10928120586..e78ba8a6c49b8f39a9c54fe0af814340c9462641 100644
--- a/src/r_draw8.c
+++ b/src/r_draw8.c
@@ -911,7 +911,6 @@ void R_DrawTiltedTranslucentSpan_8(void)
 #endif
 }
 
-#ifndef NOWATER
 /**	\brief The R_DrawTiltedTranslucentWaterSpan_8 function
 	Like DrawTiltedTranslucentSpan, but for water
 */
@@ -1045,7 +1044,6 @@ void R_DrawTiltedTranslucentWaterSpan_8(void)
 	}
 #endif
 }
-#endif // NOWATER
 
 void R_DrawTiltedSplat_8(void)
 {
@@ -1934,7 +1932,6 @@ void R_DrawTranslucentSpan_8 (void)
 	}
 }
 
-#ifndef NOWATER
 void R_DrawTranslucentWaterSpan_8(void)
 {
 	UINT32 xposition;
@@ -2011,7 +2008,6 @@ void R_DrawTranslucentWaterSpan_8(void)
 		yposition += ystep;
 	}
 }
-#endif
 
 /**	\brief The R_DrawFogSpan_8 function
 	Draws the actual span with fogging.
diff --git a/src/r_draw8_npo2.c b/src/r_draw8_npo2.c
index 895869e2d86d95e2de19774e2bfe32637480ee55..d55e40302702d96bb71c9ec54e48c9c113a90406 100644
--- a/src/r_draw8_npo2.c
+++ b/src/r_draw8_npo2.c
@@ -1190,7 +1190,6 @@ void R_DrawTranslucentSpan_NPO2_8 (void)
 	}
 }
 
-#ifndef NOWATER
 void R_DrawTranslucentWaterSpan_NPO2_8(void)
 {
 	fixed_t xposition;
@@ -1426,4 +1425,3 @@ void R_DrawTiltedTranslucentWaterSpan_NPO2_8(void)
 	}
 #endif
 }
-#endif // NOWATER
diff --git a/src/r_plane.c b/src/r_plane.c
index 7891345346d25f81efa7e828fa3c9e5b2addadd8..c3bec9a9e797abf73ce752436a4358897114eb76 100644
--- a/src/r_plane.c
+++ b/src/r_plane.c
@@ -115,15 +115,11 @@ void R_InitPlanes(void)
 }
 
 //
-// Water ripple effect!!
+// Water ripple effect
 // Needs the height of the plane, and the vertical position of the span.
 // Sets planeripple.xfrac and planeripple.yfrac, added to ds_xfrac and ds_yfrac, if the span is not tilted.
 //
 
-#ifndef NOWATER
-INT32 ds_bgofs;
-INT32 ds_waterofs;
-
 struct
 {
 	INT32 offset;
@@ -153,7 +149,6 @@ static void R_UpdatePlaneRipple(void)
 	ds_waterofs = (leveltime & 1)*16384;
 	planeripple.offset = (leveltime * 140);
 }
-#endif
 
 //
 // R_MapPlane
@@ -219,7 +214,7 @@ void R_MapPlane(INT32 y, INT32 x1, INT32 x2)
 		ds_yfrac = yoffs - FixedMul(planesin, distance) + (x1 - centerx) * ds_ystep;
 	}
 
-#ifndef NOWATER
+	// Water ripple effect
 	if (planeripple.active)
 	{
 		// Needed for ds_bgofs
@@ -242,7 +237,6 @@ void R_MapPlane(INT32 y, INT32 x1, INT32 x2)
 		if ((y + ds_bgofs) < 0)
 			ds_bgofs = -y;
 	}
-#endif
 
 	if (currentplane->slope)
 		ds_colormap = colormaps;
@@ -605,9 +599,7 @@ void R_DrawPlanes(void)
 	visplane_t *pl;
 	INT32 i;
 
-	// Note: are these two lines really needed?
-	// R_DrawSinglePlane and R_DrawSkyPlane do span/column drawer resets themselves anyway
-	spanfunc = spanfuncs[BASEDRAWFUNC];
+	R_UpdatePlaneRipple();
 
 	for (i = 0; i < MAXVISPLANES; i++, pl++)
 	{
@@ -619,10 +611,6 @@ void R_DrawPlanes(void)
 			R_DrawSinglePlane(pl);
 		}
 	}
-
-#ifndef NOWATER
-	R_UpdatePlaneRipple();
-#endif
 }
 
 // R_DrawSkyPlane
@@ -798,9 +786,7 @@ void R_DrawSinglePlane(visplane_t *pl)
 		return;
 	}
 
-#ifndef NOWATER
 	planeripple.active = false;
-#endif
 	spanfunc = spanfuncs[BASEDRAWFUNC];
 
 	if (pl->polyobj)
@@ -882,7 +868,6 @@ void R_DrawSinglePlane(visplane_t *pl)
 			}
 			else light = (pl->lightlevel >> LIGHTSEGSHIFT);
 
-#ifndef NOWATER
 			if (pl->ffloor->flags & FF_RIPPLE)
 			{
 				INT32 top, bottom;
@@ -908,7 +893,6 @@ void R_DrawSinglePlane(visplane_t *pl)
 										 vid.width, vid.width);
 				}
 			}
-#endif
 		}
 		else
 			light = (pl->lightlevel >> LIGHTSEGSHIFT);
@@ -1016,7 +1000,6 @@ void R_DrawSinglePlane(visplane_t *pl)
 			yoffs = (fixed_t)(yoffs/fudgecanyon);
 		}
 
-#ifndef NOWATER
 		if (planeripple.active)
 		{
 			fixed_t plheight = abs(P_GetSlopeZAt(pl->slope, pl->viewx, pl->viewy) - pl->viewz);
@@ -1030,16 +1013,13 @@ void R_DrawSinglePlane(visplane_t *pl)
 			}
 		}
 		else
-#endif
 			R_SetSlopePlaneVectors(pl, 0, xoffs, yoffs, fudgecanyon);
 
 		switch (spanfunctype)
 		{
-#ifndef NOWATER
 			case SPANDRAWFUNC_WATER:
 				spanfunctype = SPANDRAWFUNC_TILTEDWATER;
 				break;
-#endif
 			case SPANDRAWFUNC_TRANS:
 				spanfunctype = SPANDRAWFUNC_TILTEDTRANS;
 				break;
diff --git a/src/screen.c b/src/screen.c
index 8b6c05b6a75da3b5b6ac21b60e0e78304d921b8c..f14cf4bf6c3065790f0cad4ea413a3a5749606dd 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -122,42 +122,34 @@ void SCR_SetDrawFuncs(void)
 		colfuncs[COLDRAWFUNC_FOG] = R_DrawFogColumn_8;
 
 		spanfuncs[SPANDRAWFUNC_TRANS] = R_DrawTranslucentSpan_8;
+		spanfuncs[SPANDRAWFUNC_TILTED] = R_DrawTiltedSpan_8;
+		spanfuncs[SPANDRAWFUNC_TILTEDTRANS] = R_DrawTiltedTranslucentSpan_8;
 		spanfuncs[SPANDRAWFUNC_SPLAT] = R_DrawSplat_8;
 		spanfuncs[SPANDRAWFUNC_TRANSSPLAT] = R_DrawTranslucentSplat_8;
+		spanfuncs[SPANDRAWFUNC_TILTEDSPLAT] = R_DrawTiltedSplat_8;
 		spanfuncs[SPANDRAWFUNC_SPRITE] = R_DrawFloorSprite_8;
 		spanfuncs[SPANDRAWFUNC_TRANSSPRITE] = R_DrawTranslucentFloorSprite_8;
 		spanfuncs[SPANDRAWFUNC_TILTEDSPRITE] = R_DrawTiltedFloorSprite_8;
 		spanfuncs[SPANDRAWFUNC_TILTEDTRANSSPRITE] = R_DrawTiltedTranslucentFloorSprite_8;
-		spanfuncs[SPANDRAWFUNC_FOG] = R_DrawFogSpan_8;
-#ifndef NOWATER
 		spanfuncs[SPANDRAWFUNC_WATER] = R_DrawTranslucentWaterSpan_8;
-#endif
-		spanfuncs[SPANDRAWFUNC_TILTED] = R_DrawTiltedSpan_8;
-		spanfuncs[SPANDRAWFUNC_TILTEDTRANS] = R_DrawTiltedTranslucentSpan_8;
-#ifndef NOWATER
 		spanfuncs[SPANDRAWFUNC_TILTEDWATER] = R_DrawTiltedTranslucentWaterSpan_8;
-#endif
-		spanfuncs[SPANDRAWFUNC_TILTEDSPLAT] = R_DrawTiltedSplat_8;
+		spanfuncs[SPANDRAWFUNC_FOG] = R_DrawFogSpan_8;
 
 		// Lactozilla: Non-powers-of-two
 		spanfuncs_npo2[BASEDRAWFUNC] = R_DrawSpan_NPO2_8;
 		spanfuncs_npo2[SPANDRAWFUNC_TRANS] = R_DrawTranslucentSpan_NPO2_8;
+		spanfuncs_npo2[SPANDRAWFUNC_TILTED] = R_DrawTiltedSpan_NPO2_8;
+		spanfuncs_npo2[SPANDRAWFUNC_TILTEDTRANS] = R_DrawTiltedTranslucentSpan_NPO2_8;
 		spanfuncs_npo2[SPANDRAWFUNC_SPLAT] = R_DrawSplat_NPO2_8;
 		spanfuncs_npo2[SPANDRAWFUNC_TRANSSPLAT] = R_DrawTranslucentSplat_NPO2_8;
+		spanfuncs_npo2[SPANDRAWFUNC_TILTEDSPLAT] = R_DrawTiltedSplat_NPO2_8;
 		spanfuncs_npo2[SPANDRAWFUNC_SPRITE] = R_DrawFloorSprite_NPO2_8;
 		spanfuncs_npo2[SPANDRAWFUNC_TRANSSPRITE] = R_DrawTranslucentFloorSprite_NPO2_8;
 		spanfuncs_npo2[SPANDRAWFUNC_TILTEDSPRITE] = R_DrawTiltedFloorSprite_NPO2_8;
 		spanfuncs_npo2[SPANDRAWFUNC_TILTEDTRANSSPRITE] = R_DrawTiltedTranslucentFloorSprite_NPO2_8;
-		spanfuncs_npo2[SPANDRAWFUNC_FOG] = NULL; // Not needed
-#ifndef NOWATER
 		spanfuncs_npo2[SPANDRAWFUNC_WATER] = R_DrawTranslucentWaterSpan_NPO2_8;
-#endif
-		spanfuncs_npo2[SPANDRAWFUNC_TILTED] = R_DrawTiltedSpan_NPO2_8;
-		spanfuncs_npo2[SPANDRAWFUNC_TILTEDTRANS] = R_DrawTiltedTranslucentSpan_NPO2_8;
-#ifndef NOWATER
 		spanfuncs_npo2[SPANDRAWFUNC_TILTEDWATER] = R_DrawTiltedTranslucentWaterSpan_NPO2_8;
-#endif
-		spanfuncs_npo2[SPANDRAWFUNC_TILTEDSPLAT] = R_DrawTiltedSplat_NPO2_8;
+		spanfuncs_npo2[SPANDRAWFUNC_FOG] = NULL; // Not needed
 
 #ifdef RUSEASM
 		if (R_ASM)
diff --git a/src/screen.h b/src/screen.h
index b139bd3b4b26af375df61454874d80e590696d08..66452289cf360d1bbde5e182693043c22dabf1f8 100644
--- a/src/screen.h
+++ b/src/screen.h
@@ -140,22 +140,22 @@ enum
 {
 	SPANDRAWFUNC_BASE = BASEDRAWFUNC,
 	SPANDRAWFUNC_TRANS,
+	SPANDRAWFUNC_TILTED,
+	SPANDRAWFUNC_TILTEDTRANS,
+
 	SPANDRAWFUNC_SPLAT,
 	SPANDRAWFUNC_TRANSSPLAT,
+	SPANDRAWFUNC_TILTEDSPLAT,
+
 	SPANDRAWFUNC_SPRITE,
 	SPANDRAWFUNC_TRANSSPRITE,
 	SPANDRAWFUNC_TILTEDSPRITE,
 	SPANDRAWFUNC_TILTEDTRANSSPRITE,
-	SPANDRAWFUNC_FOG,
-#ifndef NOWATER
+
 	SPANDRAWFUNC_WATER,
-#endif
-	SPANDRAWFUNC_TILTED,
-	SPANDRAWFUNC_TILTEDTRANS,
-	SPANDRAWFUNC_TILTEDSPLAT,
-#ifndef NOWATER
 	SPANDRAWFUNC_TILTEDWATER,
-#endif
+
+	SPANDRAWFUNC_FOG,
 
 	SPANDRAWFUNC_MAX
 };