diff --git a/src/w_wad.c b/src/w_wad.c
index 9ca4e0ff00af14483e26e14192f3ab154dd61104..b5aa95fac506ce77fd3badcbd8f14ad8612fa9cf 100644
--- a/src/w_wad.c
+++ b/src/w_wad.c
@@ -1183,14 +1183,10 @@ static void ErrorIfPNG(void *d, size_t s, char *f, char *l)
     if (s < 67) // http://garethrees.org/2007/11/14/pngcrush/
         return;
 #define sigcheck ((UINT8 *)d)
-    if (sigcheck[0] == 0x89
-        && sigcheck[1] == 0x50
-        && sigcheck[2] == 0x4e
-        && sigcheck[3] == 0x47
-        && sigcheck[4] == 0x0d
-        && sigcheck[5] == 0x0a
-        && sigcheck[6] == 0x1a
-        && sigcheck[7] == 0x0a)
+    // Check for PNG file signature using memcmp
+    // As it may be faster on CPUs with slow unaligned memory access
+    // Ref: http://www.libpng.org/pub/png/spec/1.2/PNG-Rationale.html#R.PNG-file-signature
+    if (memcmp(&sigcheck[0], "\x89\x50\x4e\x47\x0d\x0a\x1a\x0a", 8) == 0)
     {
         I_Error("W_Wad: Lump \"%s\" in file \"%s\" is a .PNG - please convert to either Doom or Flat (raw) image format.", l, f);
     }