From Fedora Project Wiki

--- src/node/vrml97/image_stream_listener.cpp   2010-05-28 17:18:15.000000000 +0200
+++ src/node/vrml97/image_stream_listener.cpp   2012-02-20 17:14:54.272388043 +0100
@@ -136,7 +136,7 @@

     png_read_update_info(png_ptr, info_ptr);

-    reader.old_row.resize(png_ptr->rowbytes);
+    reader.old_row.resize(png_get_rowbytes(png_ptr, info_ptr));
 }

 void openvrml_png_row_callback(png_structp png_ptr,
@@ -166,8 +166,8 @@
     // openvrml::image pixels start at the bottom left.
     //
     const size_t image_row = (image.y() - 1) - row_num;
-    const size_t bytes_per_row = png_ptr->rowbytes;
-    const size_t image_width = png_ptr->width;
+    const size_t bytes_per_row = png_get_rowbytes(png_ptr, reader.info_ptr_);
+    const size_t image_width = png_get_image_width(png_ptr, reader.info_ptr_);
     for (size_t pixel_index = 0, byte_index = 0; pixel_index < image_width;
          ++pixel_index) {
         using openvrml::int32;
--- src/node/vrml97/image_stream_listener.h     2009-07-04 23:20:09.000000000 +0200
+++ src/node/vrml97/image_stream_listener.h     2012-02-20 17:23:09.902343267 +0100
@@ -22,7 +22,9 @@
 #   define OPENVRML_NODE_VRML97_IMAGE_STREAM_LISTENER_H

 # ifdef OPENVRML_ENABLE_PNG_TEXTURES
+extern "C" {
 #   include <png.h>
+}
 # endif
 # ifdef OPENVRML_ENABLE_JPEG_TEXTURES
 extern "C" {
@@ -81,10 +83,10 @@
                                                   png_infop info_ptr);

         class png_reader : public image_reader {
-            png_structp png_ptr_;
-            png_infop info_ptr_;

         public:
+            png_structp png_ptr_;
+            png_infop info_ptr_;
             image_stream_listener & stream_listener;
             std::vector<png_byte> old_row;
             bool gray_palette;