--- criticalmass-1.0.0.orig/configure.in
+++ criticalmass-1.0.0/configure.in
@@ -99,7 +99,7 @@ if test "x$TARGET" = xWIN32; then
 else
     LIBS="-L/usr/local/lib -L/usr/X11R6/lib $LIBS"
     CXXFLAGS="$CXXFLAGS -I/usr/X11R6/include"
-	AC_CHECK_LIB(png12, main,, AC_MSG_ERROR(libpng is needed))
+	AC_CHECK_LIB(png16, main,, AC_CHECK_LIB(png12, main,, AC_MSG_ERROR(libpng is needed)))
 	AC_CHECK_LIB(z, main,, AC_MSG_ERROR(libz is needed))
 	if test "x$TARGET" = xUNIX; then
 	    if test "x$enable_dyngl" = xoff; then
--- criticalmass-1.0.0.orig/game/main.cpp
+++ criticalmass-1.0.0/game/main.cpp
@@ -27,6 +27,7 @@
 
 #include <sys/stat.h>
 #include <sys/types.h>
+#include <zlib.h>
 
 void migrateConfig( void)
 {
--- criticalmass-1.0.0.orig/utilssdl/PNG.cpp
+++ criticalmass-1.0.0/utilssdl/PNG.cpp
@@ -45,7 +45,7 @@ void PNG::writeData( png_structp png, pn
 {
     png_size_t check;
 
-    check = fwrite( data, 1, length, (FILE *)(png->io_ptr));
+    check = fwrite( data, 1, length, (FILE *)png_get_io_ptr(png));
     if( check != length)
     {
 	png_error( png, "Write Error");
@@ -72,7 +72,7 @@ bool PNG::init( FILE *fp, int width, int
 	return false;
     }
 
-    if( setjmp(_png->jmpbuf))
+    if( setjmp(png_jmpbuf(_png)))
     {
 	fclose( fp);
 	png_destroy_write_struct(&_png, (png_infopp)NULL);
