diff -up plotutils-2.6/libplot/z_write.c.png15 plotutils-2.6/libplot/z_write.c
--- plotutils-2.6/libplot/z_write.c.png15	2008-07-15 20:54:10.000000000 -0400
+++ plotutils-2.6/libplot/z_write.c	2012-03-22 13:26:48.251676137 -0400
@@ -164,7 +164,11 @@ _pl_z_maybe_output_image (S___(Plotter *
     }
 
   /* cleanup after libpng errors (error handler does a longjmp) */
+#if PNG_LIBPNG_VER_MAJOR >= 1 && PNG_LIBPNG_VER_MINOR >= 4
+  if (setjmp (png_jmpbuf(png_ptr)))
+#else
   if (setjmp (png_ptr->jmpbuf))
+#endif
     {
       png_destroy_write_struct (&png_ptr, (png_info **)NULL);
       return -1;
@@ -444,7 +448,11 @@ _our_error_fn_stdio (png_struct *png_ptr
 #endif
     }
 
+#if PNG_LIBPNG_VER_MAJOR >= 1 && PNG_LIBPNG_VER_MINOR >= 4
+  longjmp (png_jmpbuf(png_ptr), 1);
+#else
   longjmp (png_ptr->jmpbuf, 1);
+#endif
 }
 
 static void 
@@ -515,7 +523,11 @@ _our_error_fn_stream (png_struct *png_pt
 #endif
     }
 
+#if PNG_LIBPNG_VER_MAJOR >= 1 && PNG_LIBPNG_VER_MINOR >= 4
+  longjmp (png_jmpbuf(png_ptr), 1);
+#else
   longjmp (png_ptr->jmpbuf, 1);
+#endif
 }
 
 static void 
