diff --git a/CHANGES b/CHANGES
index 19a728f..9535087 100644
--- a/CHANGES
+++ b/CHANGES
@@ -268,3 +268,11 @@
    changed some typedefs (s_start, etc.) in pngrutil.c
    fixed dimensions of "short_months" array in pngwrite.c
    Replaced ansi2knr.c with the one from jpeg-v6
+version 1.0.0 [March 8, 1998]
+   Changed name from 1.00 to 1.0.0 (Adam Costello)
+   Added smakefile.ppc (with SCOPTIONS.ppc) for Amiga PPC (Andreas Kleinert)
+version 1.0.1 [March 9, 1998]
+   Fixed three bugs in pngrtran.c to make gamma+background handling consistent
+   (Greg Roelofs)
+   Changed format of the PNG_LIBPNG_VER integer to xyyyzzzz instead of xyz
+   for major, minor, and bugfix releases.  This is 10000001L. (Adam Costello)
diff --git a/INSTALL b/INSTALL
index a14e1ac..bc9f5f0 100644
--- a/INSTALL
+++ b/INSTALL
@@ -1,5 +1,5 @@
 
-Installing libpng version 1.00 March 7, 1998
+Installing libpng version 1.0.1 March 9, 1998
 
 Before installing libpng, you must first install zlib.  zlib
 can usually be found wherever you got libpng.  zlib can be
@@ -10,7 +10,7 @@
 version of zlib that's installed.
 
 You can rename the directories that you downloaded (they
-might be called "libpng-1.00 or "lpng100" and "zlib-1.1.1"
+might be called "libpng-1.0.1 or "lpng100" and "zlib-1.1.1"
 or "zlib111") so that you have directories called "zlib" and "libpng".
 
 Your directory structure should look like this:
@@ -44,11 +44,13 @@
       makefile.dec  =>  DEC Alpha UNIX makefile
       makefile.sgi  =>  Silicon Graphics IRIX makefile
       makefile.sun  =>  Sun makefile
-      makefile.s2x  =>  Solaris 2.X makefile (gcc, creates libpng.so.2.1.00)
-      makefile.lnx  =>  Linux/ELF makefile (gcc, creates libpng.so.2.1.00)
+      makefile.s2x  =>  Solaris 2.X makefile (gcc, creates libpng.so.2.1.0)
+      makefile.lnx  =>  Linux/ELF makefile (gcc, creates libpng.so.2.1.0)
       makefile.mip  =>  MIPS makefile
       makefile.aco  =>  Acorn makefile
       makefile.ama  =>  Amiga makefile
+      smakefile.ppc =>  AMIGA smakefile for SAS C V6.58/7.00 PPC compiler
+                        (Requires SCOPTIONS, copied from scripts/SCOPTIONS.ppc)
       makefile.atr  =>  Atari makefile
       makefile.bor  =>  Borland makefile
       build.bat     =>  MS-DOS batch file for Borland compiler
diff --git a/README b/README
index 4390f6a..ea463cd 100644
--- a/README
+++ b/README
@@ -1,4 +1,4 @@
-README for libpng 1.00 (shared library 2.1)
+README for libpng 1.0.1 (shared library 2.1)
 See the note about version numbers near the top of png.h
 
 See INSTALL for instructions on how to install libpng.
@@ -161,11 +161,13 @@
         makefile.dec  =>  DEC Alpha UNIX makefile
         makefile.sgi  =>  Silicon Graphics IRIX makefile
         makefile.sun  =>  Sun makefile
-        makefile.s2x  =>  Solaris 2.X makefile (gcc, creates libpng.so.2.1.00)
-        makefile.lnx  =>  Linux/ELF makefile (gcc, creates libpng.so.2.1.00)
+        makefile.s2x  =>  Solaris 2.X makefile (gcc, creates libpng.so.2.1.0)
+        makefile.lnx  =>  Linux/ELF makefile (gcc, creates libpng.so.2.1.0)
         makefile.mip  =>  MIPS makefile
         makefile.aco  =>  Acorn makefile
         makefile.ama  =>  Amiga makefile
+        smakefile.ppc =>  AMIGA smakefile for SAS C V6.58/7.00 PPC compiler
+                          (Requires SCOPTIONS, copied from scripts/SCOPTIONS.ppc)
         makefile.atr  =>  Atari makefile
         makefile.bor  =>  Borland makefile
         build.bat     =>  MS-DOS batch file for Borland compiler
diff --git a/example.c b/example.c
index f984067..bc86aed 100644
--- a/example.c
+++ b/example.c
@@ -15,7 +15,7 @@
 
 #include "png.h"
 
-/* Check to see if a file is a PNG file using png_check_sig().  Returns
+/* Check to see if a file is a PNG file using png_sig_cmp().  Returns
  * non-zero if the image is a PNG, and 0 if it isn't a PNG.
  *
  * If this call is successful, and you are going to keep the file open,
@@ -29,7 +29,7 @@
  *
  * Many applications already read the first 2 or 4 bytes from the start
  * of the image to determine the file type, so it would be easiest just
- * to pass the bytes to png_check_sig() or even skip that if you know
+ * to pass the bytes to png_sig_cmp() or even skip that if you know
  * you have a PNG file, and call png_set_sig_bytes().
  */
 #define PNG_BYTES_TO_CHECK 4
@@ -46,7 +46,7 @@
       return 0;
 
    /* Compare the first PNG_BYTES_TO_CHECK bytes of the signature. */
-   return(png_check_sig(buf, PNG_BYTES_TO_CHECK));
+   return(png_sig_cmp(buf, (png_size_t)0, PNG_BYTES_TO_CHECK));
 }
 
 /* Read a PNG file.  You may want to return an error code if the read
@@ -92,7 +92,7 @@
    }
 
    /* Allocate/initialize the memory for image information.  REQUIRED. */
-   info_ptr = png_create_info_struct();
+   info_ptr = png_create_info_struct(png_ptr);
    if (info_ptr == NULL)
    {
       fclose(fp);
@@ -127,7 +127,7 @@
 #endif no_streams /* Use only one I/O method! */
 
    /* If we have already read some of the signature */
-   png_set_sig_bytes_read(png_ptr, sig_read);
+   png_set_sig_bytes(png_ptr, sig_read);
 
    /* The call to png_read_info() gives us all of the information from the
     * PNG file before the first IDAT (image data chunk).  REQUIRED
diff --git a/libpng.3 b/libpng.3
index c224700..1226d78 100644
--- a/libpng.3
+++ b/libpng.3
@@ -1,4 +1,4 @@
-.TH LIBPNG 3 "March 7, 1998"
+.TH LIBPNG 3 "March 9, 1998"
 .SH NAME
 libpng \- Portable Network Graphics (PNG) Reference Library
 .SH SYNOPSIS
@@ -396,7 +396,7 @@
 .SH LIBPNG.TXT
 libpng.txt - A description on how to use and modify libpng
 
- libpng version 1.00 March 7, 1998
+ libpng version 1.0.1 March 9, 1998
  Updated and distributed by Glenn Randers-Pehrson
  <randeg@alumni.rpi.edu>
  Copyright (c) 1998, Glenn Randers-Pehrson
@@ -2301,13 +2301,13 @@
                         [should have been 2.0.95]
  0.96  ("1.0 beta 6")      0.96      0.96
                         [should have been 2.0.96]
- 0.97b ("1.00.97 beta 7")  1.00.97   1.0.0
+ 0.97b ("1.00.97 beta 7")  1.00.97   1.0.1
                          [should have been 2.0.97]
  0.97c                     0.97      2.0.97
  0.98                      0.98      2.0.98
  0.99                      0.99      2.0.99
  0.99a-m                   0.99      2.0.99
- 1.0                       1.00      2.1.0
+ 1.0.1                     1.00      2.1.0
 
 Henceforth the source version will match the shared-library minor
 and patch numbers; the shared-library major version number will be
@@ -2365,7 +2365,7 @@
 
 Thanks to Frank J. T. Wojcik for helping with the documentation.
   
-Libpng version 1.00 (March 7, 1998):
+Libpng version 1.0.1 (March 9, 1998):
 Initially created in 1995 by Guy Eric Schalnat, then of Group 42, Inc.
 Currently maintained by Glenn Randers-Pehrson (randeg@alumni.rpi.edu).
 
diff --git a/libpng.txt b/libpng.txt
index 3740fbe..36fa38f 100644
--- a/libpng.txt
+++ b/libpng.txt
@@ -1,6 +1,6 @@
 libpng.txt - A description on how to use and modify libpng
 
- libpng version 1.00 March 7, 1998
+ libpng version 1.0.1 March 9, 1998
  Updated and distributed by Glenn Randers-Pehrson
  <randeg@alumni.rpi.edu>
  Copyright (c) 1998, Glenn Randers-Pehrson
diff --git a/libpngpf.3 b/libpngpf.3
index 082c47e..00730b9 100644
--- a/libpngpf.3
+++ b/libpngpf.3
@@ -1,4 +1,4 @@
-.TH LIBPNGPF 3 "March 7, 1998"
+.TH LIBPNGPF 3 "March 9, 1998"
 .SH NAME
 libpng \- Portable Network Graphics (PNG) Reference Library
 (private functions)
diff --git a/png.5 b/png.5
index 49d6959..0ba9dff 100644
--- a/png.5
+++ b/png.5
@@ -1,4 +1,4 @@
-.TH PNG 5 "March 7, 1998"
+.TH PNG 5 "March 9, 1998"
 .SH NAME
 png \- Portable Network Graphics (PNG) format
 .SH DESCRIPTION
diff --git a/png.c b/png.c
index bbbf8e4..52723df 100644
--- a/png.c
+++ b/png.c
@@ -1,12 +1,12 @@
 
 /* png.c - location for general purpose libpng functions
  *
- * libpng 1.00
+ * libpng 1.0.1
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
  * Copyright (c) 1996, 1997 Andreas Dilger
  * Copyright (c) 1998, Glenn Randers-Pehrson
- * March 7, 1998
+ * March 9, 1998
  */
 
 #define PNG_INTERNAL
@@ -16,7 +16,7 @@
 /* Version information for C files.  This had better match the version
  * string defined in png.h.
  */
-char png_libpng_ver[5] = "1.00";
+char png_libpng_ver[6] = "1.0.1";
 
 /* Place to hold the signature string for a PNG file. */
 png_byte FARDATA png_sig[8] = {137, 80, 78, 71, 13, 10, 26, 10};
diff --git a/png.h b/png.h
index db2bac3..5922edd 100644
--- a/png.h
+++ b/png.h
@@ -1,12 +1,12 @@
 
 /* png.h - header file for PNG reference library
  *
- * libpng 1.00
+ * libpng 1.0.1
  * For conditions of distribution and use, see the COPYRIGHT NOTICE below.
  * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
  * Copyright (c) 1996, 1997 Andreas Dilger
  * Copyright (c) 1998 Glenn Randers-Pehrson
- * March 7, 1998
+ * March 9, 1998
  *
  * Note about libpng version numbers:
  *
@@ -23,12 +23,12 @@
  *      0.90  ("1.0 beta 4")      0.90      0.90  [should have been 2.0.90]
  *      0.95  ("1.0 beta 5")      0.95      0.95  [should have been 2.0.95]
  *      0.96  ("1.0 beta 6")      0.96      0.96  [should have been 2.0.96]
- *      0.97b ("1.00.97 beta 7")  1.00.97   1.0.0 [should have been 2.0.97]
+ *      0.97b ("1.00.97 beta 7")  1.00.97   1.0.1 [should have been 2.0.97]
  *      0.97c                     0.97      2.0.97
  *      0.98                      0.98      2.0.98
  *      0.99                      0.99      2.0.99
  *      0.99a-m                   0.99      2.0.99
- *      1.00                      1.00      2.1.0
+ *      1.0.1                     1.00      2.1.0
  *
  *    Henceforth the source version will match the shared-library minor
  *    and patch numbers; the shared-library major version number will be
@@ -112,19 +112,20 @@
  */
 
 /* Version information for png.h - this should match the version in png.c */
-#define PNG_LIBPNG_VER_STRING "1.00"
+#define PNG_LIBPNG_VER_STRING "1.0.1"
 
 /* careful here.  At one time, I wanted to use 082, but that would be octal.
- * Version 1.0 will be 100 here, etc.
- */
-#define PNG_LIBPNG_VER  100
+ * We must not include leading blanks.
+ * Versions 0.7 through 1.0.0 were in the range 0 to 100 here.  From
+ * version 1.0.1 it's   xxxyyyzzzzL, where x=major, y=minor, z-bugfix*/
+#define PNG_LIBPNG_VER    10000001L
 
 /* variables declared in png.c - only it needs to define PNG_NO_EXTERN */
 #if !defined(PNG_NO_EXTERN) || defined(PNG_ALWAYS_EXTERN)
 /* Version information for C files, stored in png.c.  This had better match
  * the version above.
  */
-extern char png_libpng_ver[5];
+extern char png_libpng_ver[6];
 
 /* Structures to facilitate easy interlacing.  See png.c for more details */
 extern int FARDATA png_pass_start[7];
@@ -1483,11 +1484,11 @@
 #define PNG_GAMMA              0x2000
 #define PNG_GRAY_TO_RGB        0x4000
 #define PNG_FILLER             0x8000
-#define PNG_PACKSWAP          0x10000L
+#define PNG_PACKSWAP          0x1.0.1L
 #define PNG_SWAP_ALPHA        0x20000L
 #define PNG_STRIP_ALPHA       0x40000L
 #define PNG_INVERT_ALPHA      0x80000L
-#define PNG_USER_TRANSFORM   0x100000L
+#define PNG_USER_TRANSFORM   0x1.0.10L
 
 /* flags for png_create_struct */
 #define PNG_STRUCT_PNG   0x0001
@@ -1516,7 +1517,7 @@
 #define PNG_FLAG_FREE_TRANS               0x2000
 #define PNG_FLAG_FREE_HIST                0x4000
 #define PNG_FLAG_HAVE_CHUNK_HEADER        0x8000L
-#define PNG_FLAG_WROTE_tIME              0x10000L
+#define PNG_FLAG_WROTE_tIME              0x1.0.1L
 
 #define PNG_FLAG_CRC_ANCILLARY_MASK (PNG_FLAG_CRC_ANCILLARY_USE | \
                                      PNG_FLAG_CRC_ANCILLARY_NOWARN)
diff --git a/pngconf.h b/pngconf.h
index 6d0adb1..56d189b 100644
--- a/pngconf.h
+++ b/pngconf.h
@@ -1,12 +1,12 @@
 
 /* pngconf.h - machine configurable file for libpng
  *
- * libpng 1.00
+ * libpng 1.0.1
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
  * Copyright (c) 1996, 1997 Andreas Dilger
  * Copyright (c) 1998, Glenn Randers-Pehrson
- * March 7, 1998
+ * March 9, 1998
  */
 
 /* Any machine specific code is near the front of this file, so if you
diff --git a/pngerror.c b/pngerror.c
index 98d5930..2942a5b 100644
--- a/pngerror.c
+++ b/pngerror.c
@@ -1,12 +1,12 @@
 
 /* pngerror.c - stub functions for i/o and memory allocation
  *
- * libpng 1.00
+ * libpng 1.0.1
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
  * Copyright (c) 1996, 1997 Andreas Dilger
  * Copyright (c) 1998, Glenn Randers-Pehrson
- * March 7, 1998
+ * March 9, 1998
  *
  * This file provides a location for all error handling.  Users which
  * need special error handling are expected to write replacement functions
diff --git a/pngget.c b/pngget.c
index 6296589..29be31f 100644
--- a/pngget.c
+++ b/pngget.c
@@ -1,12 +1,12 @@
 
 /* pngget.c - retrieval of values from info struct
  *
- * libpng 1.00
+ * libpng 1.0.1
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
  * Copyright (c) 1996, 1997 Andreas Dilger
  * Copyright (c) 1998, Glenn Randers-Pehrson
- * March 7, 1998
+ * March 9, 1998
  */
 
 #define PNG_INTERNAL
@@ -259,14 +259,14 @@
 png_get_x_offset_inches(png_structp png_ptr, png_infop info_ptr)
 {
    return ((float)png_get_x_offset_microns(png_ptr, info_ptr)
-     *.03937/1000000. +.5)
+     *.03937/1.0.100. +.5)
 }
 
 float
 png_get_y_offset_inches(png_structp png_ptr, png_infop info_ptr)
 {
    return ((float)png_get_y_offset_microns(png_ptr, info_ptr)
-     *.03937/1000000. +.5)
+     *.03937/1.0.100. +.5)
 }
 
 #if defined(PNG_READ_pHYs_SUPPORTED)
diff --git a/pngmem.c b/pngmem.c
index 5099920..521556f 100644
--- a/pngmem.c
+++ b/pngmem.c
@@ -1,12 +1,12 @@
 
 /* pngmem.c - stub functions for memory allocation
  *
- * libpng 1.00
+ * libpng 1.0.1
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
  * Copyright (c) 1996, 1997 Andreas Dilger
  * Copyright (c) 1998, Glenn Randers-Pehrson
- * March 7, 1998
+ * March 9, 1998
  *
  * This file provides a location for all memory allocation.  Users which
  * need special memory handling are expected to modify the code in this file
diff --git a/pngpread.c b/pngpread.c
index 1723fd1..37d4d25 100644
--- a/pngpread.c
+++ b/pngpread.c
@@ -1,12 +1,12 @@
 
 /* pngpread.c - read a png file in push mode
  *
- * libpng 1.00
+ * libpng 1.0.1
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
  * Copyright (c) 1996, 1997 Andreas Dilger
  * Copyright (c) 1998, Glenn Randers-Pehrson
- * March 7, 1998
+ * March 9, 1998
  */
 
 #define PNG_INTERNAL
diff --git a/pngread.c b/pngread.c
index b1a1f8e..cc490c2 100644
--- a/pngread.c
+++ b/pngread.c
@@ -1,12 +1,12 @@
 
 /* pngread.c - read a PNG file
  *
- * libpng 1.00
+ * libpng 1.0.1
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
  * Copyright (c) 1996, 1997 Andreas Dilger
  * Copyright (c) 1998, Glenn Randers-Pehrson
- * March 7, 1998
+ * March 9, 1998
  *
  * This file contains routines that an application calls directly to
  * read a PNG file or stream.
diff --git a/pngrio.c b/pngrio.c
index 5d6682c..f165018 100644
--- a/pngrio.c
+++ b/pngrio.c
@@ -1,12 +1,12 @@
 
 /* pngrio.c - functions for data input
  *
- * libpng 1.00
+ * libpng 1.0.1
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
  * Copyright (c) 1996, 1997 Andreas Dilger
  * Copyright (c) 1998, Glenn Randers-Pehrson
- * March 7, 1998
+ * March 9, 1998
  *
  * This file provides a location for all input.  Users which need
  * special handling are expected to write a function which has the same
diff --git a/pngrtran.c b/pngrtran.c
index adc84dd..e1699d5 100644
--- a/pngrtran.c
+++ b/pngrtran.c
@@ -1,12 +1,12 @@
 
 /* pngrtran.c - transforms the data in a row for PNG readers
  *
- * libpng 1.00
+ * libpng 1.0.1
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
  * Copyright (c) 1996, 1997 Andreas Dilger
  * Copyright (c) 1998, Glenn Randers-Pehrson
- * March 7, 1998
+ * March 9, 1998
  *
  * This file contains functions optionally called by an application 
  * in order to tell libpng how to handle data when reading a PNG.
@@ -665,7 +665,8 @@
         if (png_ptr->transformations & PNG_INVERT_ALPHA)
         {
 #if defined(PNG_READ_EXPAND_SUPPORTED)
-           if (png_ptr->transformations & !PNG_EXPAND)
+           /* GRR BUG #1:  was (png_ptr->transformations & !PNG_EXPAND) */
+           if (!(png_ptr->transformations & PNG_EXPAND))
 #endif
            {
            /* invert the alpha channel (in tRNS) unless the pixels are 
@@ -712,41 +713,65 @@
             }
             else
             {
-               double g;
+               double g, gs;
 
-               g = 1.0 / (png_ptr->background_gamma * png_ptr->screen_gamma);
-
-               if (png_ptr->background_gamma_type==PNG_BACKGROUND_GAMMA_SCREEN||
-                   fabs(g - 1.0) < PNG_GAMMA_THRESHOLD)
+/*
+               GRR BUG #3:  inconsistent with handling of full RGBA below
+               g = 1.0 / png_ptr->background_gamma;
+               gs = 1.0 / (png_ptr->background_gamma * png_ptr->screen_gamma);
+ */
+               switch (png_ptr->background_gamma_type)
                {
-                  back.red = (png_byte)png_ptr->background.red;
+                  case PNG_BACKGROUND_GAMMA_SCREEN:
+                     g = (png_ptr->screen_gamma);
+                     gs = 1.0;
+                     break;
+                  case PNG_BACKGROUND_GAMMA_FILE:
+                     g = 1.0 / (png_ptr->gamma);
+                     gs = 1.0 / (png_ptr->gamma * png_ptr->screen_gamma);
+                     break;
+                  case PNG_BACKGROUND_GAMMA_UNIQUE:
+                     g = 1.0 / (png_ptr->background_gamma);
+                     gs = 1.0 / (png_ptr->background_gamma *
+                                 png_ptr->screen_gamma);
+                     break;
+                  default:
+                     g = 1.0;    /* back_1 */
+                     gs = 1.0;   /* back */
+               }
+
+               if (
+/*
+                   GRR BUG #2:  This creates self-inconsistent images--fully
+                     transparent and fully opaque look fine, but translucent
+                     pixels are wrong (too bright if XV's code can be trusted).
+                     Commenting it out makes an internally self-consistent
+                     image, but still not consistent with RGBA version of same
+                     thing (again, too bright in XV).
+                   png_ptr->background_gamma_type==PNG_BACKGROUND_GAMMA_SCREEN||
+ */
+                   fabs(gs - 1.0) < PNG_GAMMA_THRESHOLD)
+               {
+                  back.red   = (png_byte)png_ptr->background.red;
                   back.green = (png_byte)png_ptr->background.green;
-                  back.blue = (png_byte)png_ptr->background.blue;
+                  back.blue  = (png_byte)png_ptr->background.blue;
                }
                else
                {
-                  back.red =
-                     (png_byte)(pow((double)png_ptr->background.red/255, g) *
-                      255.0 + 0.5);
-                  back.green =
-                     (png_byte)(pow((double)png_ptr->background.green/255, g) *
-                      255.0 + 0.5);
-                  back.blue =
-                     (png_byte)(pow((double)png_ptr->background.blue/255, g) *
-                      255.0 + 0.5);
+                  back.red = (png_byte)(pow(
+                     (double)png_ptr->background.red/255, gs) * 255.0 + .5);
+                  back.green = (png_byte)(pow(
+                     (double)png_ptr->background.green/255, gs) * 255.0 + .5);
+                  back.blue = (png_byte)(pow(
+                     (double)png_ptr->background.blue/255, gs) * 255.0 + .5);
                }
 
-               g = 1.0 / png_ptr->background_gamma;
-
-               back_1.red =
-                  (png_byte)(pow((double)png_ptr->background.red/255, g) *
-                   255.0 + 0.5);
-               back_1.green =
-                  (png_byte)(pow((double)png_ptr->background.green/255, g) *
-                   255.0 + 0.5);
-               back_1.blue =
-                  (png_byte)(pow((double)png_ptr->background.blue/255, g) *
-                   255.0 + 0.5);
+               back_1.red = (png_byte)(pow(
+                  (double)png_ptr->background.red/255, g) * 255.0 + .5);
+               back_1.green = (png_byte)(pow(
+                  (double)png_ptr->background.green/255, g) * 255.0 + .5);
+               back_1.blue = (png_byte)(pow(
+                  (double)png_ptr->background.blue/255, g) * 255.0 + .5);
             }
 
             for (i = 0; i < num_palette; i++)
diff --git a/pngrutil.c b/pngrutil.c
index 7bc0f18..94664de 100644
--- a/pngrutil.c
+++ b/pngrutil.c
@@ -1,12 +1,12 @@
 
 /* pngrutil.c - utilities to read a PNG file
  *
- * libpng 1.00
+ * libpng 1.0.1
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
  * Copyright (c) 1996, 1997 Andreas Dilger
  * Copyright (c) 1998, Glenn Randers-Pehrson
- * March 7, 1998
+ * March 9, 1998
  *
  * This file contains routines which are only called from within
  * libpng itself during the course of reading an image.
@@ -436,7 +436,7 @@
       }
 #endif /* PNG_READ_sRGB_SUPPORTED */
 
-   file_gamma = (float)igamma / (float)100000.0;
+   file_gamma = (float)igamma / (float)1.0.10.0;
 #ifdef PNG_READ_GAMMA_SUPPORTED
    png_ptr->gamma = file_gamma;
 #endif
@@ -549,11 +549,11 @@
 
    png_crc_read(png_ptr, buf, 4);
    val = png_get_uint_32(buf);
-   white_x = (float)val / (float)100000.0;
+   white_x = (float)val / (float)1.0.10.0;
 
    png_crc_read(png_ptr, buf, 4);
    val = png_get_uint_32(buf);
-   white_y = (float)val / (float)100000.0;
+   white_y = (float)val / (float)1.0.10.0;
 
    if (white_x < 0 || white_x > 0.8 || white_y < 0 || white_y > 0.8 ||
        white_x + white_y > 1.0)
@@ -565,11 +565,11 @@
 
    png_crc_read(png_ptr, buf, 4);
    val = png_get_uint_32(buf);
-   red_x = (float)val / (float)100000.0;
+   red_x = (float)val / (float)1.0.10.0;
 
    png_crc_read(png_ptr, buf, 4);
    val = png_get_uint_32(buf);
-   red_y = (float)val / (float)100000.0;
+   red_y = (float)val / (float)1.0.10.0;
 
    if (red_x < 0 || red_x > 0.8 || red_y < 0 || red_y > 0.8 ||
        red_x + red_y > 1.0)
@@ -581,11 +581,11 @@
 
    png_crc_read(png_ptr, buf, 4);
    val = png_get_uint_32(buf);
-   green_x = (float)val / (float)100000.0;
+   green_x = (float)val / (float)1.0.10.0;
 
    png_crc_read(png_ptr, buf, 4);
    val = png_get_uint_32(buf);
-   green_y = (float)val / (float)100000.0;
+   green_y = (float)val / (float)1.0.10.0;
 
    if (green_x < 0 || green_x > 0.8 || green_y < 0 || green_y > 0.8 ||
        green_x + green_y > 1.0)
@@ -597,11 +597,11 @@
 
    png_crc_read(png_ptr, buf, 4);
    val = png_get_uint_32(buf);
-   blue_x = (float)val / (float)100000.0;
+   blue_x = (float)val / (float)1.0.10.0;
 
    png_crc_read(png_ptr, buf, 4);
    val = png_get_uint_32(buf);
-   blue_y = (float)val / (float)100000.0;
+   blue_y = (float)val / (float)1.0.10.0;
 
    if (blue_x < (float)0 || blue_x > (float)0.8 || blue_y < (float)0 ||
        blue_y > (float)0.8 || blue_x + blue_y > (float)1.0)
@@ -694,7 +694,7 @@
 
 #if defined(PNG_READ_gAMA_SUPPORTED) && defined(PNG_READ_GAMMA_SUPPORTED)
    if ((info_ptr->valid & PNG_INFO_gAMA))
-      if((png_uint_32)(png_ptr->gamma*(float)100000.+.5) != (png_uint_32)45000L)
+      if((png_uint_32)(png_ptr->gamma*(float)1.0.10.+.5) != (png_uint_32)45000L)
       {
          png_warning(png_ptr,
            "Ignoring incorrect gAMA value when sRGB is also present");
diff --git a/pngset.c b/pngset.c
index 9ccb108..d58f2fe 100644
--- a/pngset.c
+++ b/pngset.c
@@ -1,12 +1,12 @@
 
 /* pngset.c - storage of image information into info struct
  *
- * libpng 1.00
+ * libpng 1.0.1
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
  * Copyright (c) 1996, 1997 Andreas Dilger
  * Copyright (c) 1998, Glenn Randers-Pehrson
- * March 7, 1998
+ * March 9, 1998
  *
  * The functions here are used during reads to store data from the file
  * into the info struct, and during writes to store application data
diff --git a/pngtest.c b/pngtest.c
index e1a3ea0..76df2da 100644
--- a/pngtest.c
+++ b/pngtest.c
@@ -1,12 +1,12 @@
 
 /* pngtest.c - a simple test program to test libpng
  *
- * libpng 1.00
+ * libpng 1.0.1
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
  * Copyright (c) 1996, 1997 Andreas Dilger
  * Copyright (c) 1998, Glenn Randers-Pehrson
- * March 7, 1998
+ * March 9, 1998
  *
  * This program reads in a PNG image, writes it out again, and then
  * compares the two files.  If the files are identical, this shows that
diff --git a/pngtrans.c b/pngtrans.c
index d67afa8..771366b 100644
--- a/pngtrans.c
+++ b/pngtrans.c
@@ -1,12 +1,12 @@
 
 /* pngtrans.c - transforms the data in a row (used by both readers and writers)
  *
- * libpng 1.00
+ * libpng 1.0.1
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
  * Copyright (c) 1996, 1997 Andreas Dilger
  * Copyright (c) 1998, Glenn Randers-Pehrson
- * March 7, 1998
+ * March 9, 1998
  */
 
 #define PNG_INTERNAL
diff --git a/pngwio.c b/pngwio.c
index c8879ef..fa5ade8 100644
--- a/pngwio.c
+++ b/pngwio.c
@@ -1,12 +1,12 @@
 
 /* pngwio.c - functions for data output
  *
- * libpng 1.00
+ * libpng 1.0.1
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
  * Copyright (c) 1996, 1997 Andreas Dilger
  * Copyright (c) 1998, Glenn Randers-Pehrson
- * March 7, 1998
+ * March 9, 1998
  *
  * This file provides a location for all output.  Users which need
  * special handling are expected to write functions which have the same
diff --git a/pngwrite.c b/pngwrite.c
index 1a92322..9d3fdc3 100644
--- a/pngwrite.c
+++ b/pngwrite.c
@@ -1,12 +1,12 @@
    
 /* pngwrite.c - general routines to write a PNG file
  *
- * libpng 1.00
+ * libpng 1.0.1
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
  * Copyright (c) 1996, 1997 Andreas Dilger
  * Copyright (c) 1998, Glenn Randers-Pehrson
- * March 7, 1998
+ * March 9, 1998
  */
 
 /* get internal access to png.h */
diff --git a/pngwtran.c b/pngwtran.c
index 25a2d64..2db759e 100644
--- a/pngwtran.c
+++ b/pngwtran.c
@@ -1,12 +1,12 @@
 
 /* pngwtran.c - transforms the data in a row for PNG writers
  *
- * libpng 1.00
+ * libpng 1.0.1
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
  * Copyright (c) 1996, 1997 Andreas Dilger
  * Copyright (c) 1998, Glenn Randers-Pehrson
- * March 7, 1998
+ * March 9, 1998
  */
 
 #define PNG_INTERNAL
diff --git a/pngwutil.c b/pngwutil.c
index 04fb1de..17faf8f 100644
--- a/pngwutil.c
+++ b/pngwutil.c
@@ -1,12 +1,12 @@
 
 /* pngwutil.c - utilities to write a PNG file
  *
- * libpng 1.00
+ * libpng 1.0.1
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
  * Copyright (c) 1996, 1997 Andreas Dilger
  * Copyright (c) 1998, Glenn Randers-Pehrson
- * March 7, 1998
+ * March 9, 1998
  */
 
 #define PNG_INTERNAL
@@ -340,8 +340,8 @@
    png_byte buf[4];
 
    png_debug(1, "in png_write_gAMA\n");
-   /* file_gamma is saved in 1/100,000ths */
-   igamma = (png_uint_32)(file_gamma * 100000.0 + 0.5);
+   /* file_gamma is saved in 1/1.0.100ths */
+   igamma = (png_uint_32)(file_gamma * 1.0.10.0 + 0.5);
    png_save_uint_32(buf, igamma);
    png_write_chunk(png_ptr, png_gAMA, buf, (png_size_t)4);
 }
@@ -426,16 +426,16 @@
    png_byte buf[32];
 
    png_debug(1, "in png_write_cHRM\n");
-   /* each value is saved int 1/100,000ths */
+   /* each value is saved int 1/1.0.100ths */
    if (white_x < 0 || white_x > 0.8 || white_y < 0 || white_y > 0.8 ||
        white_x + white_y > 1.0)
    {
       png_warning(png_ptr, "Invalid cHRM white point specified");
       return;
    }
-   itemp = (png_uint_32)(white_x * 100000.0 + 0.5);
+   itemp = (png_uint_32)(white_x * 1.0.10.0 + 0.5);
    png_save_uint_32(buf, itemp);
-   itemp = (png_uint_32)(white_y * 100000.0 + 0.5);
+   itemp = (png_uint_32)(white_y * 1.0.10.0 + 0.5);
    png_save_uint_32(buf + 4, itemp);
 
    if (red_x < 0 || red_x > 0.8 || red_y < 0 || red_y > 0.8 ||
@@ -444,9 +444,9 @@
       png_warning(png_ptr, "Invalid cHRM red point specified");
       return;
    }
-   itemp = (png_uint_32)(red_x * 100000.0 + 0.5);
+   itemp = (png_uint_32)(red_x * 1.0.10.0 + 0.5);
    png_save_uint_32(buf + 8, itemp);
-   itemp = (png_uint_32)(red_y * 100000.0 + 0.5);
+   itemp = (png_uint_32)(red_y * 1.0.10.0 + 0.5);
    png_save_uint_32(buf + 12, itemp);
 
    if (green_x < 0 || green_x > 0.8 || green_y < 0 || green_y > 0.8 ||
@@ -455,9 +455,9 @@
       png_warning(png_ptr, "Invalid cHRM green point specified");
       return;
    }
-   itemp = (png_uint_32)(green_x * 100000.0 + 0.5);
+   itemp = (png_uint_32)(green_x * 1.0.10.0 + 0.5);
    png_save_uint_32(buf + 16, itemp);
-   itemp = (png_uint_32)(green_y * 100000.0 + 0.5);
+   itemp = (png_uint_32)(green_y * 1.0.10.0 + 0.5);
    png_save_uint_32(buf + 20, itemp);
 
    if (blue_x < 0 || blue_x > 0.8 || blue_y < 0 || blue_y > 0.8 ||
@@ -466,9 +466,9 @@
       png_warning(png_ptr, "Invalid cHRM blue point specified");
       return;
    }
-   itemp = (png_uint_32)(blue_x * 100000.0 + 0.5);
+   itemp = (png_uint_32)(blue_x * 1.0.10.0 + 0.5);
    png_save_uint_32(buf + 24, itemp);
-   itemp = (png_uint_32)(blue_y * 100000.0 + 0.5);
+   itemp = (png_uint_32)(blue_y * 1.0.10.0 + 0.5);
    png_save_uint_32(buf + 28, itemp);
 
    png_write_chunk(png_ptr, png_cHRM, buf, (png_size_t)32);
diff --git a/scripts/SCOPTIONS.ppc b/scripts/SCOPTIONS.ppc
new file mode 100644
index 0000000..2c3503e
--- /dev/null
+++ b/scripts/SCOPTIONS.ppc
@@ -0,0 +1,7 @@
+OPTIMIZE
+OPTPEEP
+OPTTIME
+OPTSCHED
+AUTOREGISTER
+PARMS=REGISTERS
+INCLUDEDIR=hlp:ppc/include
diff --git a/scripts/makefile.lnx b/scripts/makefile.lnx
index 851eb82..3d1a76a 100644
--- a/scripts/makefile.lnx
+++ b/scripts/makefile.lnx
@@ -24,7 +24,7 @@
 # read libpng.txt or png.h to see why PNGMAJ is 2.  You should not
 # have to change it.
 PNGMAJ = 2
-PNGMIN = 1.00
+PNGMIN = 1.0
 PNGVER = $(PNGMAJ).$(PNGMIN)
 
 # where make install puts libpng.a, libpng.so*, and png.h
diff --git a/scripts/makefile.s2x b/scripts/makefile.s2x
index 48055b6..0503890 100644
--- a/scripts/makefile.s2x
+++ b/scripts/makefile.s2x
@@ -23,7 +23,7 @@
 # read libpng.txt or png.h to see why PNGMAJ is 2.  You should not
 # have to change it.
 PNGMAJ = 2
-PNGMIN = 1.00
+PNGMIN = 1.0
 PNGVER = $(PNGMAJ).$(PNGMIN)
 
 # where make install puts libpng.a, libpng.so*, and png.h
diff --git a/scripts/makefile.wat b/scripts/makefile.wat
index 761aad5..a715acb 100644
--- a/scripts/makefile.wat
+++ b/scripts/makefile.wat
@@ -1,5 +1,5 @@
 # Makefile for libpng
-# Watcom 10a+ 32-bit protected mode flat memory model
+# Watcom 10a and later 32-bit protected mode flat memory model
 
 # Adapted by Pawel Mrochen, based on makefile.msc
 # For conditions of distribution and use, see copyright notice in png.h
@@ -7,7 +7,7 @@
 
 # To use, do "wmake -f makefile.wat"
 
-# ------------- Watcom 10a+ -------------
+# ------------- Watcom 10a and later -------------
 MODEL=-mf
 CFLAGS= $(MODEL) -fpi87 -fp5 -5r -oaeilmnrt -s -zp4 -i=..\zlib
 CC=wcc386
diff --git a/scripts/smakefile.ppc b/scripts/smakefile.ppc
new file mode 100644
index 0000000..fa3cad4
--- /dev/null
+++ b/scripts/smakefile.ppc
@@ -0,0 +1,29 @@
+# Amiga powerUP (TM) Makefile
+# makefile for libpng and SAS C V6.58/7.00 PPC compiler
+# Copyright (C) 1998 by Andreas R. Kleinert
+
+CC       = scppc
+CFLAGS   = NOSTKCHK NOSINT OPTIMIZE OPTGO OPTPEEP OPTINLOCAL OPTINL IDIR /zlib \
+           OPTLOOP OPTRDEP=8 OPTDEP=8 OPTCOMP=8
+LIBNAME  = libpng.a
+AR       = ppc-amigaos-ar
+AR_FLAGS = cr
+RANLIB   = ppc-amigaos-ranlib
+LDFLAGS  = -r -o
+LDLIBS   =  ../zlib/libzip.a LIB:scppc.a
+LN       = ppc-amigaos-ld
+RM       = delete quiet
+MKDIR    = makedir
+
+OBJS = png.o pngset.o pngget.o pngrutil.o pngtrans.o pngwutil.o pngread.o \
+pngerror.o pngpread.o pngwrite.o pngrtran.o pngwtran.o pngrio.o pngwio.o pngmem.o
+
+all: $(LIBNAME) pngtest
+
+$(LIBNAME): $(OBJS)
+            $(AR) $(AR_FLAGS) $@ $(OBJS)
+            $(RANLIB) $@
+
+pngtest: pngtest.o $(LIBNAME)
+        $(LN) $(LDFLAGS) pngtest LIB:c_ppc.o pngtest.o $(LIBNAME) $(LDLIBS) \
+LIB:end.o
