diff a/third_party/libpng16/pngmem.c b/third_party/libpng16/pngmem.c
--- a/third_party/libpng16/pngmem.c
+++ b/third_party/libpng16/pngmem.c
@@ -19,6 +19,9 @@
 
 #include "pngpriv.h"
 
+void*	FXMEM_DefaultAlloc(int byte_size, int);
+void	FXMEM_DefaultFree(void* pointer, int);
+
 #if defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED)
 /* Free a png_struct */
 void /* PRIVATE */
@@ -92,7 +95,7 @@
 
       else
 #endif
-         return malloc((size_t)size); /* checked for truncation above */
+         return FXMEM_DefaultAlloc((int)size, 0);
    }
 
    else
@@ -249,7 +252,7 @@
       return;
 #endif /* USER_MEM */
 
-   free(ptr);
+   FXMEM_DefaultFree(ptr, 0);
 }
 
 #ifdef PNG_USER_MEM_SUPPORTED
diff a/third_party/libpng16/pngstruct.h b/third_party/libpng16/pngstruct.h
--- a/third_party/libpng16/pngstruct.h
+++ b/third_party/libpng16/pngstruct.h
@@ -27,7 +27,7 @@
    /* We must ensure that zlib uses 'const' in declarations. */
 #  define ZLIB_CONST
 #endif
-#include "zlib.h"
+#include "third_party/zlib_v128/zlib.h"
 #ifdef const
    /* zlib.h sometimes #defines const to nothing, undo this. */
 #  undef const