diff --git a/src/screen.c b/src/screen.c
index a1f6b7f55dfeee62a3ab29d1e8f39cffb03faffc..5005118b6c2a1de28d37d2f447488e8e3e362559 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -421,9 +421,9 @@ void SCR_DisplayTicRate(void)
 	else if (totaltics == TICRATE) ticcntcolor = V_GREENMAP;
 
 	V_DrawString(vid.width-(72*vid.dupx), h,
-		V_YELLOWMAP|V_NOSCALESTART|V_HUDTRANS, "FPS:");
+		V_YELLOWMAP|V_NOSCALESTART|V_USERHUDTRANS, "FPS:");
 	V_DrawString(vid.width-(40*vid.dupx), h,
-		ticcntcolor|V_NOSCALESTART|V_HUDTRANS, va("%02d/%02u", totaltics, TICRATE));
+		ticcntcolor|V_NOSCALESTART|V_USERHUDTRANS, va("%02d/%02u", totaltics, TICRATE));
 
 	lasttic = ontic;
 }
diff --git a/src/st_stuff.c b/src/st_stuff.c
index 5ccf9bb52d9590514d48eb409afcb5ef93d428e6..6f75a25e7ed216876fb3551a5803a1833a45e4c1 100644
--- a/src/st_stuff.c
+++ b/src/st_stuff.c
@@ -198,7 +198,7 @@ void ST_Ticker(boolean run)
 
 // 0 is default, any others are special palettes.
 INT32 st_palette = 0;
-INT32 st_translucency = 0;
+INT32 st_translucency = 10;
 
 void ST_doPaletteStuff(void)
 {
diff --git a/src/v_video.h b/src/v_video.h
index cd32ac5f89ed5879f01a0e44adfae872e1f2c908..e3dbb75dc0617c79bec46b43aecadc462c6ad494 100644
--- a/src/v_video.h
+++ b/src/v_video.h
@@ -106,6 +106,10 @@ extern RGBA_t *pMasterPalette;
 #define V_HUDTRANSHALF       0x000D0000
 #define V_HUDTRANS           0x000E0000 // draw the hud translucent
 #define V_HUDTRANSDOUBLE     0x000F0000
+// Macros follow
+#define V_USERHUDTRANSHALF   ((10-(cv_translucenthud.value/2))<<V_ALPHASHIFT)
+#define V_USERHUDTRANS       ((10-cv_translucenthud.value)<<V_ALPHASHIFT)
+#define V_USERHUDTRANSDOUBLE ((10-min(cv_translucenthud.value*2, 10))<<V_ALPHASHIFT)
 
 #define V_AUTOFADEOUT        0x00100000 // used by CECHOs, automatic fade out when almost over
 #define V_RETURN8            0x00200000 // 8 pixel return instead of 12