diff --git a/src/hardware/hw_main.c b/src/hardware/hw_main.c
index 74be53db50c9addb0e442cbeab04046eb8d3280a..e1b5d23ff321b4c8a6b6cab0b81c21eb03f6c750 100644
--- a/src/hardware/hw_main.c
+++ b/src/hardware/hw_main.c
@@ -5969,6 +5969,8 @@ static void HWR_DrawSkyBackground(player_t *player)
 		dometransform.scalez = 1;
 		dometransform.fovxangle = fpov; // Tails
 		dometransform.fovyangle = fpov; // Tails
+		dometransform.roll = (player->viewrollangle != 0);
+		dometransform.rollangle = FIXED_TO_FLOAT(AngleFixed(player->viewrollangle));
 		dometransform.splitscreen = splitscreen;
 
 		HWR_GetTexture(texturetranslation[skytexture]);
@@ -6192,6 +6194,8 @@ void HWR_RenderSkyboxView(INT32 viewnumber, player_t *player)
 	atransform.scalez = 1;
 	atransform.fovxangle = fpov; // Tails
 	atransform.fovyangle = fpov; // Tails
+	atransform.roll = (player->viewrollangle != 0);
+	atransform.rollangle = FIXED_TO_FLOAT(AngleFixed(player->viewrollangle));
 	atransform.splitscreen = splitscreen;
 
 	gr_fovlud = (float)(1.0l/tan((double)(fpov*M_PIl/360l)));
@@ -6412,6 +6416,8 @@ void HWR_RenderPlayerView(INT32 viewnumber, player_t *player)
 	atransform.scalez = 1;
 	atransform.fovxangle = fpov; // Tails
 	atransform.fovyangle = fpov; // Tails
+	atransform.roll = (player->viewrollangle != 0);
+	atransform.rollangle = FIXED_TO_FLOAT(AngleFixed(player->viewrollangle));
 	atransform.splitscreen = splitscreen;
 
 	gr_fovlud = (float)(1.0l/tan((double)(fpov*M_PIl/360l)));
diff --git a/src/hardware/r_opengl/r_opengl.c b/src/hardware/r_opengl/r_opengl.c
index becce9fa3a9f35ea16bc7dca37562d55c1bbe042..a3ed3c8d223481226173e4a89afa899d6cf7f891 100644
--- a/src/hardware/r_opengl/r_opengl.c
+++ b/src/hardware/r_opengl/r_opengl.c
@@ -2238,6 +2238,8 @@ EXPORT void HWRAPI(SetTransform) (FTransform *stransform)
 		else
 			pglScalef(stransform->scalex, stransform->scaley, -stransform->scalez);
 
+		if (stransform->roll)
+			pglRotatef(stransform->rollangle, 0.0f, 0.0f, 1.0f);
 		pglRotatef(stransform->anglex       , 1.0f, 0.0f, 0.0f);
 		pglRotatef(stransform->angley+270.0f, 0.0f, 1.0f, 0.0f);
 		pglTranslatef(-stransform->x, -stransform->z, -stransform->y);