diff --git a/src/p_setup.c b/src/p_setup.c
index 9054b582c204eee55e988087c1c48137d782fa71..25139bf2b91efec2d74a3d2f009bb555f1b8700e 100644
--- a/src/p_setup.c
+++ b/src/p_setup.c
@@ -568,7 +568,9 @@ or NULL if we want to allocate it now.
 static INT32
 Ploadflat (levelflat_t *levelflat, const char *flatname)
 {
+#ifndef NO_PNG_LUMPS
 	UINT8         buffer[8];
+#endif
 
 	lumpnum_t    flatnum;
 	int       texturenum;
diff --git a/src/r_patch.h b/src/r_patch.h
index 23ac025f6909b6739b079927f5b3882e8506aa23..4ffa3f2218d4d0549627fdf87c92ece96b206401 100644
--- a/src/r_patch.h
+++ b/src/r_patch.h
@@ -17,13 +17,13 @@
 #include "r_defs.h"
 #include "doomdef.h"
 
-// structs
+// Structs
 #ifdef ROTSPRITE
 typedef enum
 {
-	ROTAXIS_X, // roll (the default)
-	ROTAXIS_Y, // pitch
-	ROTAXIS_Z  // yaw
+	ROTAXIS_X, // Roll (the default)
+	ROTAXIS_Y, // Pitch
+	ROTAXIS_Z  // Yaw
 } rotaxis_t;
 
 typedef struct
@@ -41,30 +41,30 @@ typedef struct
 	boolean available;
 } spriteinfo_t;
 
-extern spriteinfo_t spriteinfo[NUMSPRITES];
-
-// patches, flats, textures...
+// Conversions between patches / flats / textures...
 boolean R_CheckIfPatch(lumpnum_t lump);
-boolean R_IsLumpPNG(const UINT8 *d, size_t s);
-
 void R_TextureToFlat(size_t tex, UINT8 *flat);
 void R_PatchToFlat(patch_t *patch, UINT8 *flat);
 void R_PatchToFlat_16bpp(patch_t *patch, UINT16 *raw, boolean flip);
 patch_t *R_FlatToPatch(UINT8 *raw, UINT16 width, UINT16 height, UINT16 leftoffset, UINT16 topoffset, size_t *destsize, boolean transparency);
 patch_t *R_FlatToPatch_16bpp(UINT16 *raw, UINT16 width, UINT16 height, size_t *size);
 
-// png
+// Portable Network Graphics
+boolean R_IsLumpPNG(const UINT8 *d, size_t s);
+#define W_ThrowPNGError(lumpname, wadfilename) I_Error("W_Wad: Lump \"%s\" in file \"%s\" is a .png - please convert to either Doom or Flat (raw) image format.", lumpname, wadfilename); // Fears Of LJ Sonic
+
 #ifndef NO_PNG_LUMPS
 UINT8 *R_PNGToFlat(UINT16 *width, UINT16 *height, UINT8 *png, size_t size);
 patch_t *R_PNGToPatch(const UINT8 *png, size_t size, size_t *destsize, boolean transparency);
 boolean R_PNGDimensions(UINT8 *png, INT16 *width, INT16 *height, size_t size);
 #endif
 
-// spriteinfo
+// SpriteInfo
+extern spriteinfo_t spriteinfo[NUMSPRITES];
 void R_LoadSpriteInfoLumps(UINT16 wadnum, UINT16 numlumps);
 void R_ParseSPRTINFOLump(UINT16 wadNum, UINT16 lumpNum);
 
-// rotsprite
+// Sprite rotation
 #ifdef ROTSPRITE
 void R_CacheRotSprite(spritenum_t sprnum, UINT8 frame, spriteinfo_t *sprinfo, spriteframe_t *sprframe, INT32 rot, UINT8 flip);
 void R_FreeSingleRotSprite(spritedef_t *spritedef);
diff --git a/src/w_wad.c b/src/w_wad.c
index 0cd2175ecf394af5144e5bb75fd94c1842ec9505..2690253e443ec7161243d37da4f71e76ccbdd03c 100644
--- a/src/w_wad.c
+++ b/src/w_wad.c
@@ -1229,7 +1229,7 @@ size_t W_ReadLumpHeaderPwad(UINT16 wad, UINT16 lump, void *dest, size_t size, si
 		{
 			size_t bytesread = fread(dest, 1, size, handle);
 			if (R_IsLumpPNG((UINT8 *)dest, bytesread))
-				I_Error("W_Wad: Lump \"%s\" in file \"%s\" is a .png - please convert to either Doom or Flat (raw) image format.", l->name2, wadfiles[wad]->filename);
+				W_ThrowPNGError(l->name2, wadfiles[wad]->filename);
 			return bytesread;
 		}
 #else
@@ -1270,7 +1270,8 @@ size_t W_ReadLumpHeaderPwad(UINT16 wad, UINT16 lump, void *dest, size_t size, si
 			Z_Free(rawData);
 			Z_Free(decData);
 #ifdef NO_PNG_LUMPS
-			ErrorIfPNG(dest, size, wadfiles[wad]->filename, l->name2);
+			if (R_IsLumpPNG((UINT8 *)dest, size))
+				W_ThrowPNGError(l->name2, wadfiles[wad]->filename);
 #endif
 			return size;
 #else
@@ -1332,7 +1333,8 @@ size_t W_ReadLumpHeaderPwad(UINT16 wad, UINT16 lump, void *dest, size_t size, si
 			Z_Free(decData);
 
 #ifdef NO_PNG_LUMPS
-			ErrorIfPNG(dest, size, wadfiles[wad]->filename, l->name2);
+			if (R_IsLumpPNG((UINT8 *)dest, size))
+				W_ThrowPNGError(l->name2, wadfiles[wad]->filename);
 #endif
 			return size;
 		}