diff --git a/src/renderer/Image_load.cpp b/src/renderer/Image_load.cpp
--- a/src/renderer/Image_load.cpp
+++ b/src/renderer/Image_load.cpp
@@ -112,7 +112,12 @@ ID_INLINE void idImage::DeriveOpts() {
 			opts.format = FMT_DEPTH;
 			break;
 		case TD_LIGHT:
+#if defined( __EMSCRIPTEN__ )
+			// WebGL 2 has no GL_UNPACK_SWAP_BYTES support for the RGB565 upload path.
+			opts.format = FMT_RGBA8;
+#else
 			opts.format = FMT_RGB565;
+#endif
 			opts.gammaMips = true;
 			break;
 		case TD_LIGHTGRID:
