diff --git a/src/sdl/i_video.c b/src/sdl/i_video.c
index a27a5ebd2687b9e7c6dee529e3a40aa9c76f54e1..ab30cf0ca95297a84afe928517cb95bbb4a97410 100644
--- a/src/sdl/i_video.c
+++ b/src/sdl/i_video.c
@@ -1633,6 +1633,11 @@ static SDL_bool Impl_CreateWindow(SDL_bool fullscreen)
 #ifdef HWRENDER
 	if (vid.glstate == VID_GL_LIBRARY_LOADED)
 		flags |= SDL_WINDOW_OPENGL;
+
+	// Without a 24-bit depth buffer many visuals are ruined by z-fighting.
+	// Some GPU drivers may give us a 16-bit depth buffer since the
+	// default value for SDL_GL_DEPTH_SIZE is 16.
+	SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 24);
 #endif
 
 	// Create a window