diff --git a/ANNOUNCE b/ANNOUNCE
index a03e24b..176f2e4 100644
--- a/ANNOUNCE
+++ b/ANNOUNCE
@@ -1,5 +1,5 @@
 
-Libpng 1.4.18beta02 - November 23, 2015
+Libpng 1.4.18rc01 - November 26, 2015
 
 This is not intended to be a public release.  It will be replaced
 within a few weeks by a public version or by another test version.
@@ -9,21 +9,21 @@
 Source files with LF line endings (for Unix/Linux) and with a
 "configure" script
 
-   1.4.18beta02.tar.xz (LZMA-compressed, recommended)
-   1.4.18beta02.tar.gz
-   1.4.18beta02.tar.bz2
+   1.4.18rc01.tar.xz (LZMA-compressed, recommended)
+   1.4.18rc01.tar.gz
+   1.4.18rc01.tar.bz2
 
 Source files with CRLF line endings (for Windows), without the
 "configure" script
 
-   lp1418b02.7z (LZMA-compressed, recommended)
-   lp1418b02.zip
+   lp1418r01.7z (LZMA-compressed, recommended)
+   lp1418r01.zip
 
 Other information:
 
-   1.4.18beta02-README.txt
-   1.4.18beta02-LICENSE.txt
-   libpng-1.4.18beta02-*.asc (armored detached GPG signatures)
+   1.4.18rc01-README.txt
+   1.4.18rc01-LICENSE.txt
+   libpng-1.4.18rc01-*.asc (armored detached GPG signatures)
 
 Changes since the last public release (1.4.17):
 
@@ -31,9 +31,13 @@
   Avoid potential pointer overflow in png_handle_iTXt(), png_handle_zTXt(),
     png_handle_sPLT(), and png_handle_pCAL() (Bug report by John Regehr).
 
-version 1.4.18beta02 [%RDATE%]
-  Fixed bug recently introduced in png_set_PLTE() that uses png_ptr
-    not info_ptr.
+version 1.4.18beta02 [November 23, 2015]
+  Fixed incorrect implementation of png_set_PLTE() that uses png_ptr
+    not info_ptr, that left png_set_PLTE() open to the CVE-2015-8126
+    vulnerability.
+
+version 1.4.18rc01 [November 26, 2015]
+  Discontinued distributing tar.bz2 archives.
 
 Send comments/corrections/commendations to glennrp at users.sourceforge.net
 or to png-mng-implement at lists.sf.net (subscription required; visit
diff --git a/CHANGES b/CHANGES
index 461b882..e860fb9 100644
--- a/CHANGES
+++ b/CHANGES
@@ -3012,8 +3012,12 @@
     png_handle_sPLT(), and png_handle_pCAL() (Bug report by John Regehr).
 
 version 1.4.18beta02 [November 23, 2015]
-  Fixed bug recently introduced in png_set_PLTE() that uses png_ptr
-    not info_ptr.
+  Fixed incorrect implementation of png_set_PLTE() that uses png_ptr
+    not info_ptr, that left png_set_PLTE() open to the CVE-2015-8126
+    vulnerability.
+
+version 1.4.18rc01 [November 26, 2015]
+  Discontinued distributing tar.bz2 archives.
 
 Send comments/corrections/commendations to glennrp at users.sourceforge.net
 or to png-mng-implement at lists.sf.net (subscription required; visit
diff --git a/CMakeLists.txt b/CMakeLists.txt
index e26c8f7..632ab13 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -255,7 +255,7 @@
 # SET UP LINKS
 if(PNG_SHARED)
   set_target_properties(${PNG_LIB_NAME} PROPERTIES
-#   VERSION 14.${PNGLIB_RELEASE}.1.4.18beta02
+#   VERSION 14.${PNGLIB_RELEASE}.1.4.18rc01
     VERSION 14.${PNGLIB_RELEASE}.0
     SOVERSION 14
     CLEAN_DIRECT_OUTPUT 1)
diff --git a/INSTALL b/INSTALL
index 92952d5..a746a29 100644
--- a/INSTALL
+++ b/INSTALL
@@ -1,5 +1,5 @@
 
-Installing libpng version 1.4.18beta02 - November 23, 2015
+Installing libpng version 1.4.18rc01 - November 26, 2015
 
 On Unix/Linux and similar systems, you can simply type
 
@@ -46,7 +46,7 @@
 correspond to the version of zlib that's installed.
 
 You can rename the directories that you downloaded (they
-might be called "libpng-1.4.18beta02" or "libpng14" and "zlib-1.2.3"
+might be called "libpng-1.4.18rc01" or "libpng14" and "zlib-1.2.3"
 or "zlib123") so that you have directories called "zlib" and "libpng".
 
 Your directory structure should look like this:
diff --git a/LICENSE b/LICENSE
index 87f57b7..4afcc67 100644
--- a/LICENSE
+++ b/LICENSE
@@ -10,7 +10,7 @@
 
 This code is released under the libpng license.
 
-libpng versions 1.0.7, July 1, 2000, through 1.4.18beta02, November 23, 2015, are
+libpng versions 1.0.7, July 1, 2000, through 1.4.18rc01, November 26, 2015, are
 Copyright (c) 2000-2002, 2004, 2006-2015 Glenn Randers-Pehrson, are
 derived from libpng-1.0.6, and are distributed according to the same
 disclaimer and license as libpng-1.0.6 with the following individuals
@@ -107,4 +107,4 @@
 
 Glenn Randers-Pehrson
 glennrp at users.sourceforge.net
-November 23, 2015
+November 26, 2015
diff --git a/Makefile.am b/Makefile.am
index acb01ef..69f7a1e 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -79,7 +79,7 @@
 	${srcdir}/contrib/pngsuite/* \
 	${srcdir}/contrib/visupng/* \
 	$(TESTS) \
-	example.c libpng-1.4.18beta02.txt
+	example.c libpng-1.4.18rc01.txt
 
 CLEANFILES= pngout.png libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@.pc libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@-config libpng.vers \
 libpng.sym
diff --git a/Makefile.in b/Makefile.in
index 5a903a1..e0e2a8a 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -628,7 +628,7 @@
 	${srcdir}/contrib/pngsuite/* \
 	${srcdir}/contrib/visupng/* \
 	$(TESTS) \
-	example.c libpng-1.4.18beta02.txt
+	example.c libpng-1.4.18rc01.txt
 
 CLEANFILES = pngout.png libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@.pc libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@-config libpng.vers \
 libpng.sym
diff --git a/README b/README
index 5de24bc..f41370e 100644
--- a/README
+++ b/README
@@ -1,4 +1,4 @@
-README for libpng version 1.4.18beta02 - November 23, 2015 (shared library 14.0)
+README for libpng version 1.4.18rc01 - November 26, 2015 (shared library 14.0)
 See the note about version numbers near the top of png.h
 
 See INSTALL for instructions on how to install libpng.
@@ -187,9 +187,9 @@
        makefile.std     =>  Generic UNIX makefile (cc, creates static
                             libpng.a)
        makefile.elf     =>  Linux/ELF makefile symbol versioning,
-                            (gcc, creates libpng14.so.14.1.4.18beta02)
+                            (gcc, creates libpng14.so.14.1.4.18rc01)
        makefile.linux   =>  Linux/ELF makefile
-                            (gcc, creates libpng14.so.14.1.4.18beta02)
+                            (gcc, creates libpng14.so.14.1.4.18rc01)
        makefile.gcc     =>  Generic makefile (gcc, creates static libpng.a)
        makefile.knr     =>  Archaic UNIX Makefile that converts files with
                             ansi2knr (Requires ansi2knr.c from
@@ -211,12 +211,12 @@
        makefile.openbsd =>  OpenBSD makefile
        makefile.sgi     =>  Silicon Graphics IRIX (cc, creates static lib)
        makefile.sggcc   =>  Silicon Graphics
-                            (gcc, creates libpng14.so.14.1.4.18beta02)
+                            (gcc, creates libpng14.so.14.1.4.18rc01)
        makefile.sunos   =>  Sun makefile
        makefile.solaris =>  Solaris 2.X makefile
-                            (gcc, creates libpng14.so.14.1.4.18beta02)
+                            (gcc, creates libpng14.so.14.1.4.18rc01)
        makefile.so9     =>  Solaris 9 makefile
-                            (gcc, creates libpng14.so.14.1.4.18beta02)
+                            (gcc, creates libpng14.so.14.1.4.18rc01)
        makefile.32sunu  =>  Sun Ultra 32-bit makefile
        makefile.64sunu  =>  Sun Ultra 64-bit makefile
        makefile.sco     =>  For SCO OSr5  ELF and Unixware 7 with Native cc
diff --git a/configure b/configure
index 20623bd..e4c31a9 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for libpng 1.4.18beta02.
+# Generated by GNU Autoconf 2.69 for libpng 1.4.18rc01.
 #
 # Report bugs to <png-mng-implement@lists.sourceforge.net>.
 #
@@ -590,8 +590,8 @@
 # Identity of this package.
 PACKAGE_NAME='libpng'
 PACKAGE_TARNAME='libpng'
-PACKAGE_VERSION='1.4.18beta02'
-PACKAGE_STRING='libpng 1.4.18beta02'
+PACKAGE_VERSION='1.4.18rc01'
+PACKAGE_STRING='libpng 1.4.18rc01'
 PACKAGE_BUGREPORT='png-mng-implement@lists.sourceforge.net'
 PACKAGE_URL=''
 
@@ -1333,7 +1333,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures libpng 1.4.18beta02 to adapt to many kinds of systems.
+\`configure' configures libpng 1.4.18rc01 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1403,7 +1403,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of libpng 1.4.18beta02:";;
+     short | recursive ) echo "Configuration of libpng 1.4.18rc01:";;
    esac
   cat <<\_ACEOF
 
@@ -1520,7 +1520,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-libpng configure 1.4.18beta02
+libpng configure 1.4.18rc01
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1943,7 +1943,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by libpng $as_me 1.4.18beta02, which was
+It was created by libpng $as_me 1.4.18rc01, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -2806,7 +2806,7 @@
 
 # Define the identity of the package.
  PACKAGE='libpng'
- VERSION='1.4.18beta02'
+ VERSION='1.4.18rc01'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -2923,7 +2923,7 @@
 
 
 
-PNGLIB_VERSION=1.4.18beta02
+PNGLIB_VERSION=1.4.18rc01
 PNGLIB_MAJOR=1
 PNGLIB_MINOR=4
 PNGLIB_RELEASE=18
@@ -13615,7 +13615,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by libpng $as_me 1.4.18beta02, which was
+This file was extended by libpng $as_me 1.4.18rc01, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -13681,7 +13681,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-libpng config.status 1.4.18beta02
+libpng config.status 1.4.18rc01
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
diff --git a/configure.ac b/configure.ac
index 7edbd91..7235c1b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -16,14 +16,14 @@
 dnl stamps are correct
 AC_PREREQ(2.59)
 
-AC_INIT([libpng], [1.4.18beta02], [png-mng-implement@lists.sourceforge.net])
+AC_INIT([libpng], [1.4.18rc01], [png-mng-implement@lists.sourceforge.net])
 AM_INIT_AUTOMAKE
 dnl stop configure from automagically running automake
 AM_MAINTAINER_MODE
 
 dnl Version number stuff here:
 
-PNGLIB_VERSION=1.4.18beta02
+PNGLIB_VERSION=1.4.18rc01
 PNGLIB_MAJOR=1
 PNGLIB_MINOR=4
 PNGLIB_RELEASE=18
diff --git a/contrib/gregbook/rpng-x.c b/contrib/gregbook/rpng-x.c
index 0a98170..b9e4307 100644
--- a/contrib/gregbook/rpng-x.c
+++ b/contrib/gregbook/rpng-x.c
@@ -252,8 +252,8 @@
             else {
                 bgstr = *argv;
                 if (strlen(bgstr) != 7 || bgstr[0] != '#')
-                    ++error; 
-                else 
+                    ++error;
+                else
                     have_bg = TRUE;
             }
         } else {
diff --git a/contrib/gregbook/rpng2-x.c b/contrib/gregbook/rpng2-x.c
index eea95fb..0c8ddeb 100644
--- a/contrib/gregbook/rpng2-x.c
+++ b/contrib/gregbook/rpng2-x.c
@@ -496,12 +496,12 @@
           "\t\t  transparent images; overrides -bgcolor\n",
           num_bgpat-1);
 #ifdef FEATURE_LOOP
-        fprintf(stderr, 
+        fprintf(stderr,
           "    -loop\tloops through background images after initial display\n"
           "\t\t  is complete (depends on -bgpat)\n"
           "    sec \tseconds to display each background image (default = 2)\n");
 #endif
-        fprintf(stderr, 
+        fprintf(stderr,
           "    dur \tduration in microseconds to wait after displaying each\n"
           "\t\t  row (for demo purposes)\n"
           "    -timing\tenables delay for every block read, to simulate modem\n"
diff --git a/contrib/pngminus/png2pnm.c b/contrib/pngminus/png2pnm.c
index 326f144..b1b9fd3 100644
--- a/contrib/pngminus/png2pnm.c
+++ b/contrib/pngminus/png2pnm.c
@@ -403,7 +403,7 @@
             if (bit_depth == 16){
 	      dep_16 = (long) *pix_ptr++;
               fprintf (alpha_file, "%ld ", (dep_16 << 8) + (long) *pix_ptr++);
-	    }  
+	    }
             else
               fprintf (alpha_file, "%ld ", (long) *pix_ptr++);
         }
diff --git a/contrib/visupng/PngFile.c b/contrib/visupng/PngFile.c
index db0219e..e741319 100644
--- a/contrib/visupng/PngFile.c
+++ b/contrib/visupng/PngFile.c
@@ -152,29 +152,29 @@
 
     Try
     {
-        
+
         // initialize the png structure
-        
+
 #ifdef PNG_STDIO_SUPPORTED
         png_init_io(png_ptr, pfFile);
 #else
         png_set_read_fn(png_ptr, (png_voidp)pfFile, png_read_data);
 #endif
-        
+
         png_set_sig_bytes(png_ptr, 8);
-        
+
         // read all PNG info up to image data
-        
+
         png_read_info(png_ptr, info_ptr);
-        
+
         // get width, height, bit-depth and color-type
-        
+
         png_get_IHDR(png_ptr, info_ptr, piWidth, piHeight, &iBitDepth,
             &iColorType, NULL, NULL, NULL);
-        
+
         // expand images of all color-type and bit-depth to 3x8 bit RGB images
         // let the library process things like alpha, transparency, background
-        
+
         if (iBitDepth == 16)
             png_set_strip_16(png_ptr);
         if (iColorType == PNG_COLOR_TYPE_PALETTE)
@@ -186,7 +186,7 @@
         if (iColorType == PNG_COLOR_TYPE_GRAY ||
             iColorType == PNG_COLOR_TYPE_GRAY_ALPHA)
             png_set_gray_to_rgb(png_ptr);
-        
+
         // set the background color to draw transparent and alpha images over.
         if (png_get_bKGD(png_ptr, info_ptr, &pBackground))
         {
@@ -199,30 +199,30 @@
         {
             pBkgColor = NULL;
         }
-        
+
         // if required set gamma conversion
         if (png_get_gAMA(png_ptr, info_ptr, &dGamma))
             png_set_gamma(png_ptr, (double) 2.2, dGamma);
-        
+
         // after the transformations have been registered update info_ptr data
-        
+
         png_read_update_info(png_ptr, info_ptr);
-        
+
         // get again width, height and the new bit-depth and color-type
-        
+
         png_get_IHDR(png_ptr, info_ptr, piWidth, piHeight, &iBitDepth,
             &iColorType, NULL, NULL, NULL);
-        
-        
+
+
         // row_bytes is the width x number of channels
-        
+
         ulRowBytes = png_get_rowbytes(png_ptr, info_ptr);
         ulChannels = png_get_channels(png_ptr, info_ptr);
-        
+
         *piChannels = ulChannels;
-        
+
         // now we can allocate memory to store the image
-        
+
         if (pbImageData)
         {
             free (pbImageData);
@@ -234,33 +234,33 @@
             png_error(png_ptr, "Visual PNG: out of memory");
         }
         *ppbImageData = pbImageData;
-        
+
         // and allocate memory for an array of row-pointers
-        
+
         if ((ppbRowPointers = (png_bytepp) malloc((*piHeight)
                             * sizeof(png_bytep))) == NULL)
         {
             png_error(png_ptr, "Visual PNG: out of memory");
         }
-        
+
         // set the individual row-pointers to point at the correct offsets
-        
+
         for (i = 0; i < (*piHeight); i++)
             ppbRowPointers[i] = pbImageData + i * ulRowBytes;
-        
+
         // now we can go ahead and just read the whole image
-        
+
         png_read_image(png_ptr, ppbRowPointers);
-        
+
         // read the additional chunks in the PNG file (not really needed)
-        
+
         png_read_end(png_ptr, NULL);
-        
+
         // and we're done
-        
+
         free (ppbRowPointers);
         ppbRowPointers = NULL;
-        
+
         // yepp, done
     }
 
@@ -269,7 +269,7 @@
         png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
 
         *ppbImageData = pbImageData = NULL;
-        
+
         if(ppbRowPointers)
             free (ppbRowPointers);
 
@@ -323,58 +323,58 @@
     Try
     {
         // initialize the png structure
-        
+
 #ifdef PNG_STDIO_SUPPORTED
         png_init_io(png_ptr, pfFile);
 #else
         png_set_write_fn(png_ptr, (png_voidp)pfFile, png_write_data, png_flush);
 #endif
-        
+
         // we're going to write a very simple 3x8 bit RGB image
-        
+
         png_set_IHDR(png_ptr, info_ptr, iWidth, iHeight, ciBitDepth,
             PNG_COLOR_TYPE_RGB, PNG_INTERLACE_NONE, PNG_COMPRESSION_TYPE_BASE,
             PNG_FILTER_TYPE_BASE);
-        
+
         // write the file header information
-        
+
         png_write_info(png_ptr, info_ptr);
-        
+
         // swap the BGR pixels in the DiData structure to RGB
-        
+
         png_set_bgr(png_ptr);
-        
+
         // row_bytes is the width x number of channels
-        
+
         ulRowBytes = iWidth * ciChannels;
-        
+
         // we can allocate memory for an array of row-pointers
-        
+
         if ((ppbRowPointers = (png_bytepp) malloc(iHeight * sizeof(png_bytep))) == NULL)
             Throw "Visualpng: Out of memory";
-        
+
         // set the individual row-pointers to point at the correct offsets
-        
+
         for (i = 0; i < iHeight; i++)
             ppbRowPointers[i] = pDiData + i * (((ulRowBytes + 3) >> 2) << 2);
-        
+
         // write out the entire image data in one call
-        
+
         png_write_image (png_ptr, ppbRowPointers);
-        
+
         // write the additional chunks to the PNG file (not really needed)
-        
+
         png_write_end(png_ptr, info_ptr);
-        
+
         // and we're done
-        
+
         free (ppbRowPointers);
         ppbRowPointers = NULL;
-        
+
         // clean up after the write, and free any memory allocated
-        
+
         png_destroy_write_struct(&png_ptr, (png_infopp) NULL);
-        
+
         // yepp, done
     }
 
@@ -389,9 +389,9 @@
 
         return FALSE;
     }
-    
+
     fclose (pfFile);
-    
+
     return TRUE;
 }
 
diff --git a/contrib/visupng/PngFile.h b/contrib/visupng/PngFile.h
index dc6bbb4..c9d3836 100644
--- a/contrib/visupng/PngFile.h
+++ b/contrib/visupng/PngFile.h
@@ -17,7 +17,7 @@
 BOOL PngFileOpenDlg (HWND hwnd, PTSTR pstrFileName, PTSTR pstrTitleName) ;
 BOOL PngFileSaveDlg (HWND hwnd, PTSTR pstrFileName, PTSTR pstrTitleName) ;
 
-BOOL PngLoadImage (PTSTR pstrFileName, png_byte **ppbImageData, 
+BOOL PngLoadImage (PTSTR pstrFileName, png_byte **ppbImageData,
                    int *piWidth, int *piHeight, int *piChannels, png_color *pBkgColor);
 BOOL PngSaveImage (PTSTR pstrFileName, png_byte *pDiData,
                    int iWidth, int iHeight, png_color BkgColor);
diff --git a/contrib/visupng/VisualPng.c b/contrib/visupng/VisualPng.c
index 2018999..cb8ad7f 100644
--- a/contrib/visupng/VisualPng.c
+++ b/contrib/visupng/VisualPng.c
@@ -302,23 +302,23 @@
             {
                 if (strcmp (szImgPathName, "") == 0)
                     return 0;
-                
+
                 // load the image from file
-                
+
                 if (!LoadImageFile (hwnd, szImgPathName, &pbImage,
                         &cxImgSize, &cyImgSize, &cImgChannels, &bkgColor))
                     return 0;
-                
+
                 // invalidate the client area for later update
-                
+
                 InvalidateRect (hwnd, NULL, TRUE);
-                
+
                 // display the PNG into the DIBitmap
-                
+
                 DisplayImage (hwnd, &pDib, &pDiData, cxWinSize, cyWinSize,
                     pbImage, cxImgSize, cyImgSize, cImgChannels, bStretched);
             }
-            
+
             return 0;
 
         case IDM_FILE_PREVIOUS:
@@ -328,22 +328,22 @@
             if (SearchPngList (pPngFileList, iPngFileCount, &iPngFileIndex,
                 szImgPathName, NULL))
             {
-                
+
                 if (strcmp (szImgPathName, "") == 0)
                     return 0;
-                
+
                 // load the image from file
-                
+
                 if (!LoadImageFile (hwnd, szImgPathName, &pbImage, &cxImgSize,
                     &cyImgSize, &cImgChannels, &bkgColor))
                     return 0;
-                
+
                 // invalidate the client area for later update
-                
+
                 InvalidateRect (hwnd, NULL, TRUE);
-                
+
                 // display the PNG into the DIBitmap
-                
+
                 DisplayImage (hwnd, &pDib, &pDiData, cxWinSize, cyWinSize,
                     pbImage, cxImgSize, cyImgSize, cImgChannels, bStretched);
             }
@@ -619,29 +619,29 @@
     if (FileCount > 0)
     {
         // get previous entry
-        
+
         if (pstrPrevName != NULL)
         {
             if (*pFileIndex > 0)
                 *pFileIndex -= 1;
             else
                 *pFileIndex = FileCount - 1;
-            
+
             strcpy (pstrPrevName, pFileList + (*pFileIndex * MAX_PATH));
         }
-        
+
         // get next entry
-        
+
         if (pstrNextName != NULL)
         {
             if (*pFileIndex < FileCount - 1)
                 *pFileIndex += 1;
             else
                 *pFileIndex = 0;
-            
+
             strcpy (pstrNextName, pFileList + (*pFileIndex * MAX_PATH));
         }
-        
+
         return TRUE;
     }
     else
diff --git a/contrib/visupng/resource.h b/contrib/visupng/resource.h
index 611dd03..b62176d 100644
--- a/contrib/visupng/resource.h
+++ b/contrib/visupng/resource.h
@@ -12,7 +12,7 @@
 #define IDM_HELP_ABOUT                  40008
 
 // Next default values for new objects
-// 
+//
 #ifdef APSTUDIO_INVOKED
 #ifndef APSTUDIO_READONLY_SYMBOLS
 #define _APS_NEXT_RESOURCE_VALUE        113
diff --git a/libpng-1.4.18beta02.txt b/libpng-1.4.18rc01.txt
similarity index 99%
rename from libpng-1.4.18beta02.txt
rename to libpng-1.4.18rc01.txt
index dad2881..06cb68e 100644
--- a/libpng-1.4.18beta02.txt
+++ b/libpng-1.4.18rc01.txt
@@ -1,6 +1,6 @@
 libpng.txt - A description on how to use and modify libpng
 
- libpng version 1.4.18beta02 - November 23, 2015
+ libpng version 1.4.18rc01 - November 26, 2015
  Updated and distributed by Glenn Randers-Pehrson
  <glennrp at users.sourceforge.net>
  Copyright (c) 1998-2014 Glenn Randers-Pehrson
@@ -11,7 +11,7 @@
 
  Based on:
 
- libpng versions 0.97, January 1998, through 1.4.18beta02 - November 23, 2015
+ libpng versions 0.97, January 1998, through 1.4.18rc01 - November 26, 2015
  Updated and distributed by Glenn Randers-Pehrson
  Copyright (c) 1998-2014 Glenn Randers-Pehrson
 
@@ -907,7 +907,7 @@
 As of libpng version 1.2.9, png_set_expand_gray_1_2_4_to_8() was
 added.  It expands the sample depth without changing tRNS to alpha.
 
-As of libpng version 1.4.18beta02, not all possible expansions are supported.
+As of libpng version 1.4.18rc01, not all possible expansions are supported.
 
 In the following table, the 01 means grayscale with depth<8, 31 means
 indexed with depth<8, other numerals represent the color type, "T" means
@@ -3293,7 +3293,7 @@
 an official declaration.
 
 This is your unofficial assurance that libpng from version 0.71 and
-upward through 1.4.18beta02 are Y2K compliant.  It is my belief that earlier
+upward through 1.4.18rc01 are Y2K compliant.  It is my belief that earlier
 versions were also Y2K compliant.
 
 Libpng only has three year fields.  One is a 2-byte unsigned integer that
diff --git a/libpng.3 b/libpng.3
index b8b7730..8ff14d7 100644
--- a/libpng.3
+++ b/libpng.3
@@ -1,6 +1,6 @@
-.TH LIBPNG 3 "November 23, 2015"
+.TH LIBPNG 3 "November 26, 2015"
 .SH NAME
-libpng \- Portable Network Graphics (PNG) Reference Library 1.4.18beta02
+libpng \- Portable Network Graphics (PNG) Reference Library 1.4.18rc01
 .SH SYNOPSIS
 \fB
 #include <png.h>\fP
@@ -442,7 +442,7 @@
 .SH LIBPNG.TXT
 libpng.txt - A description on how to use and modify libpng
 
- libpng version 1.4.18beta02 - November 23, 2015
+ libpng version 1.4.18rc01 - November 26, 2015
  Updated and distributed by Glenn Randers-Pehrson
  <glennrp at users.sourceforge.net>
  Copyright (c) 1998-2014 Glenn Randers-Pehrson
@@ -453,7 +453,7 @@
 
  Based on:
 
- libpng versions 0.97, January 1998, through 1.4.18beta02 - November 23, 2015
+ libpng versions 0.97, January 1998, through 1.4.18rc01 - November 26, 2015
  Updated and distributed by Glenn Randers-Pehrson
  Copyright (c) 1998-2014 Glenn Randers-Pehrson
 
@@ -1349,7 +1349,7 @@
 As of libpng version 1.2.9, png_set_expand_gray_1_2_4_to_8() was
 added.  It expands the sample depth without changing tRNS to alpha.
 
-As of libpng version 1.4.18beta02, not all possible expansions are supported.
+As of libpng version 1.4.18rc01, not all possible expansions are supported.
 
 In the following table, the 01 means grayscale with depth<8, 31 means
 indexed with depth<8, other numerals represent the color type, "T" means
@@ -3735,7 +3735,7 @@
 an official declaration.
 
 This is your unofficial assurance that libpng from version 0.71 and
-upward through 1.4.18beta02 are Y2K compliant.  It is my belief that earlier
+upward through 1.4.18rc01 are Y2K compliant.  It is my belief that earlier
 versions were also Y2K compliant.
 
 Libpng only has three year fields.  One is a 2-byte unsigned integer that
@@ -3832,7 +3832,7 @@
  ...
  1.0.19                  10    10019  10.so.0.19[.0]
  ...
- 1.4.17                  14    10417  14.so.14.17[.0]
+ 1.4.18                  14    10418  14.so.14.18[.0]
 
 Henceforth the source version will match the shared-library minor
 and patch numbers; the shared-library major version number will be
@@ -3888,7 +3888,7 @@
 
 Thanks to Frank J. T. Wojcik for helping with the documentation.
 
-Libpng version 1.4.18beta02 - November 23, 2015:
+Libpng version 1.4.18rc01 - November 26, 2015:
 Initially created in 1995 by Guy Eric Schalnat, then of Group 42, Inc.
 Currently maintained by Glenn Randers-Pehrson (glennrp at users.sourceforge.net).
 
@@ -3913,7 +3913,7 @@
 
 This code is released under the libpng license.
 
-libpng versions 1.0.7, July 1, 2000, through 1.4.18beta02, November 23, 2015, are
+libpng versions 1.0.7, July 1, 2000, through 1.4.18rc01, November 26, 2015, are
 Copyright (c) 2000-2002, 2004, 2006-2015 Glenn Randers-Pehrson, are
 derived from libpng-1.0.6, and are distributed according to the same
 disclaimer and license as libpng-1.0.6 with the following individuals
@@ -4010,7 +4010,7 @@
 
 Glenn Randers-Pehrson
 glennrp at users.sourceforge.net
-November 23, 2015
+November 26, 2015
 
 .\" end of man page
 
diff --git a/libpngpf.3 b/libpngpf.3
index 21dd5c0..e278a64 100644
--- a/libpngpf.3
+++ b/libpngpf.3
@@ -1,6 +1,6 @@
-.TH LIBPNGPF 3 "November 23, 2015"
+.TH LIBPNGPF 3 "November 26, 2015"
 .SH NAME
-libpng \- Portable Network Graphics (PNG) Reference Library 1.4.18beta02
+libpng \- Portable Network Graphics (PNG) Reference Library 1.4.18rc01
 (private functions)
 .SH SYNOPSIS
 \fB#include <png.h>
diff --git a/png.5 b/png.5
index 5b3daab..1044a35 100644
--- a/png.5
+++ b/png.5
@@ -1,4 +1,4 @@
-.TH PNG 5 "November 23, 2015"
+.TH PNG 5 "November 26, 2015"
 .SH NAME
 png \- Portable Network Graphics (PNG) format
 .SH DESCRIPTION
diff --git a/png.c b/png.c
index 21965a0..21ac296 100644
--- a/png.c
+++ b/png.c
@@ -17,7 +17,7 @@
 #include "pngpriv.h"
 
 /* Generate a compiler error if there is an old png.h in the search path. */
-typedef version_1_4_18beta02 Your_png_h_is_not_version_1_4_18beta02;
+typedef version_1_4_18rc01 Your_png_h_is_not_version_1_4_18rc01;
 
 /* Tells libpng that we have already handled the first "num_bytes" bytes
  * of the PNG file signature.  If the PNG data is embedded into another
@@ -558,13 +558,13 @@
 #else
 #ifdef __STDC__
    return ((png_charp) PNG_STRING_NEWLINE \
-     "libpng version 1.4.18beta02 - November 23, 2015" PNG_STRING_NEWLINE \
+     "libpng version 1.4.18rc01 - November 26, 2015" PNG_STRING_NEWLINE \
      "Copyright (c) 1998-2015 Glenn Randers-Pehrson" PNG_STRING_NEWLINE \
      "Copyright (c) 1996-1997 Andreas Dilger" PNG_STRING_NEWLINE \
      "Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc." \
      PNG_STRING_NEWLINE);
 #else
-      return ((png_charp) "libpng version 1.4.18beta02 - November 23, 2015\
+      return ((png_charp) "libpng version 1.4.18rc01 - November 26, 2015\
       Copyright (c) 1998-2015 Glenn Randers-Pehrson\
       Copyright (c) 1996-1997 Andreas Dilger\
       Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.");
diff --git a/png.h b/png.h
index 744b064..18eaa8d 100644
--- a/png.h
+++ b/png.h
@@ -1,7 +1,7 @@
 
 /* png.h - header file for PNG reference library
  *
- * libpng version 1.4.18beta02, November 23, 2015
+ * libpng version 1.4.18rc01, November 26, 2015
  *
  * Copyright (c) 1998-2015 Glenn Randers-Pehrson
  * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
@@ -12,7 +12,7 @@
  * Authors and maintainers:
  *  libpng versions 0.71, May 1995, through 0.88, January 1996: Guy Schalnat
  *  libpng versions 0.89c, June 1996, through 0.96, May 1997: Andreas Dilger
- *  libpng versions 0.97, January 1998, through 1.4.18beta02, November 23, 2015: Glenn
+ *  libpng versions 0.97, January 1998, through 1.4.18rc01, November 26, 2015: Glenn
  *  See also "Contributing Authors", below.
  */
 
@@ -24,7 +24,7 @@
  *
  * This code is released under the libpng license.
  *
- * libpng versions 1.0.7, July 1, 2000, through 1.4.18beta02, November 23, 2015, are
+ * libpng versions 1.0.7, July 1, 2000, through 1.4.18rc01, November 26, 2015, are
  * Copyright (c) 2000-2002, 2004, 2006-2015 Glenn Randers-Pehrson, are
  * derived from libpng-1.0.6, and are distributed according to the same
  * disclaimer and license as libpng-1.0.6 with the following individuals
@@ -179,7 +179,7 @@
  *    ...
  *    1.0.19                  10    10019  10.so.0.19[.0]
  *    ...
- *    1.4.17                  14    10417  14.so.14.17[.0]
+ *    1.4.18                  14    10418  14.so.14.18[.0]
  *
  *    Henceforth the source version will match the shared-library major
  *    and minor numbers; the shared-library major version number will be
@@ -207,13 +207,13 @@
  * Y2K compliance in libpng:
  * =========================
  *
- *    November 23, 2015
+ *    November 26, 2015
  *
  *    Since the PNG Development group is an ad-hoc body, we can't make
  *    an official declaration.
  *
  *    This is your unofficial assurance that libpng from version 0.71 and
- *    upward through 1.4.18beta02 are Y2K compliant.  It is my belief that earlier
+ *    upward through 1.4.18rc01 are Y2K compliant.  It is my belief that earlier
  *    versions were also Y2K compliant.
  *
  *    Libpng only has three year fields.  One is a 2-byte unsigned integer
@@ -269,9 +269,9 @@
  */
 
 /* Version information for png.h - this should match the version in png.c */
-#define PNG_LIBPNG_VER_STRING "1.4.18beta02"
+#define PNG_LIBPNG_VER_STRING "1.4.18rc01"
 #define PNG_HEADER_VERSION_STRING \
-   " libpng version 1.4.18beta02 - November 23, 2015\n"
+   " libpng version 1.4.18rc01 - November 26, 2015\n"
 
 #define PNG_LIBPNG_VER_SONUM   14
 #define PNG_LIBPNG_VER_DLLNUM  14
@@ -284,7 +284,7 @@
  * PNG_LIBPNG_VER_STRING, omitting any leading zero:
  */
 
-#define PNG_LIBPNG_VER_BUILD  02
+#define PNG_LIBPNG_VER_BUILD  01
 
 /* Release Status */
 #define PNG_LIBPNG_BUILD_ALPHA    1
@@ -301,7 +301,7 @@
 #define PNG_LIBPNG_BUILD_SPECIAL 32 /* Cannot be OR'ed with
                                        PNG_LIBPNG_BUILD_PRIVATE */
 
-#define PNG_LIBPNG_BUILD_BASE_TYPE PNG_LIBPNG_BUILD_BETA
+#define PNG_LIBPNG_BUILD_BASE_TYPE PNG_LIBPNG_BUILD_RC
 
 /* Careful here.  At one time, Guy wanted to use 082, but that would be octal.
  * We must not include leading zeros.
@@ -1378,7 +1378,7 @@
 /* This triggers a compiler error in png.c, if png.c and png.h
  * do not agree upon the version number.
  */
-typedef png_structp version_1_4_18beta02;
+typedef png_structp version_1_4_18rc01;
 
 typedef png_struct FAR * FAR * png_structpp;
 
diff --git a/pngconf.h b/pngconf.h
index d4cc663..63af8a5 100644
--- a/pngconf.h
+++ b/pngconf.h
@@ -1,7 +1,7 @@
 
 /* pngconf.h - machine configurable file for libpng
  *
- * libpng version 1.4.18beta02, November 23, 2015
+ * libpng version 1.4.18rc01, November 26, 2015
  *
  * Copyright (c) 1998-2015 Glenn Randers-Pehrson
  * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
diff --git a/pngpriv.h b/pngpriv.h
index bde19a4..7c8ea5f 100644
--- a/pngpriv.h
+++ b/pngpriv.h
@@ -1,7 +1,7 @@
 
 /* pngpriv.h - private declarations for use inside libpng
  *
- * libpng version 1.4.18beta02 - November 23, 2015
+ * libpng version 1.4.18rc01 - November 26, 2015
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1998-2014 Glenn Randers-Pehrson
  * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
diff --git a/pngrtran.c b/pngrtran.c
index cc05863..85d2134 100644
--- a/pngrtran.c
+++ b/pngrtran.c
@@ -1726,7 +1726,7 @@
       switch (row_info->bit_depth)
       {
          default:
-            break; 
+            break;
 
          case 2:
          {
diff --git a/pngrutil.c b/pngrutil.c
index 99728bd..826775a 100644
--- a/pngrutil.c
+++ b/pngrutil.c
@@ -1,7 +1,7 @@
 
 /* pngrutil.c - utilities to read a PNG file
  *
- * Last changed in libpng 1.4.18 [November 23, 2015]
+ * Last changed in libpng 1.4.18 [November 26, 2015]
  * Copyright (c) 1998-2015 Glenn Randers-Pehrson
  * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
  * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
diff --git a/pngtest.c b/pngtest.c
index 6aac771..5db2d6e 100644
--- a/pngtest.c
+++ b/pngtest.c
@@ -1737,4 +1737,4 @@
 }
 
 /* Generate a compiler error if there is an old png.h in the search path. */
-typedef version_1_4_18beta02 your_png_h_is_not_version_1_4_18beta02;
+typedef version_1_4_18rc01 your_png_h_is_not_version_1_4_18rc01;
diff --git a/projects/vstudio/readme.txt b/projects/vstudio/readme.txt
index fbf4eb1..d1db0b0 100644
--- a/projects/vstudio/readme.txt
+++ b/projects/vstudio/readme.txt
@@ -1,7 +1,7 @@
 
 VisualStudio instructions
 
-libpng version 1.4.18beta02 - November 23, 2015
+libpng version 1.4.18rc01 - November 26, 2015
 
 Copyright (c) 1998-2010 Glenn Randers-Pehrson
 
diff --git a/projects/vstudio/zlib.props b/projects/vstudio/zlib.props
index 50d34e0..7969e03 100644
--- a/projects/vstudio/zlib.props
+++ b/projects/vstudio/zlib.props
@@ -2,7 +2,7 @@
 <!--
  * zlib.props - location of zlib source and build
  *
- * libpng version 1.4.18beta02 - November 23, 2015
+ * libpng version 1.4.18rc01 - November 26, 2015
  *
  * Copyright (c) 1998-2011 Glenn Randers-Pehrson
  *
diff --git a/scripts/README.txt b/scripts/README.txt
index 05ee496..044db07 100644
--- a/scripts/README.txt
+++ b/scripts/README.txt
@@ -1,8 +1,8 @@
 
-Makefiles for  libpng version 1.4.18beta02 - November 23, 2015
+Makefiles for  libpng version 1.4.18rc01 - November 26, 2015
 
  makefile.linux    =>  Linux/ELF makefile
-                       (gcc, creates libpng14.so.14.1.4.18beta02)
+                       (gcc, creates libpng14.so.14.1.4.18rc01)
  makefile.gcc      =>  Generic makefile (gcc, creates static libpng.a)
  makefile.knr      =>  Archaic UNIX Makefile that converts files with
                        ansi2knr (Requires ansi2knr.c from
@@ -20,7 +20,7 @@
  makefile.dec      =>  DEC Alpha UNIX makefile
  makefile.dj2      =>  DJGPP 2 makefile
  makefile.elf      =>  Linux/ELF makefile symbol versioning,
-                       (gcc, creates libpng14.so.14.1.4.18beta02)
+                       (gcc, creates libpng14.so.14.1.4.18rc01)
  makefile.freebsd  =>  FreeBSD makefile
  makefile.gcc      =>  Generic gcc makefile
  makefile.hpgcc    =>  HPUX makefile using gcc
@@ -36,12 +36,12 @@
  makefile.os2      =>  OS/2 Makefile (gcc and emx, requires pngos2.def)
  makefile.sco      =>  For SCO OSr5  ELF and Unixware 7 with Native cc
  makefile.sggcc    =>  Silicon Graphics (gcc,
-                       creates libpng14.so.14.1.4.18beta02)
+                       creates libpng14.so.14.1.4.18rc01)
  makefile.sgi      =>  Silicon Graphics IRIX makefile (cc, creates static lib)
  makefile.solaris  =>  Solaris 2.X makefile (gcc,
-                       creates libpng14.so.14.1.4.18beta02)
+                       creates libpng14.so.14.1.4.18rc01)
  makefile.so9      =>  Solaris 9 makefile (gcc,
-                       creates libpng14.so.14.1.4.18beta02)
+                       creates libpng14.so.14.1.4.18rc01)
  makefile.std      =>  Generic UNIX makefile (cc, creates static libpng.a)
  makefile.sunos    =>  Sun makefile
  makefile.32sunu   =>  Sun Ultra 32-bit makefile
diff --git a/scripts/libpng-config-head.in b/scripts/libpng-config-head.in
index 85f8364..7d737e9 100755
--- a/scripts/libpng-config-head.in
+++ b/scripts/libpng-config-head.in
@@ -11,7 +11,7 @@
 
 # Modeled after libxml-config.
 
-version=1.4.18beta02
+version=1.4.18rc01
 prefix=""
 libdir=""
 libs=""
diff --git a/scripts/libpng.pc.in b/scripts/libpng.pc.in
index bb089a3..473c8a4 100644
--- a/scripts/libpng.pc.in
+++ b/scripts/libpng.pc.in
@@ -5,6 +5,6 @@
 
 Name: libpng
 Description: Loads and saves PNG files
-Version: 1.4.18beta02
+Version: 1.4.18rc01
 Libs: -L${libdir} -lpng14
 Cflags: -I${includedir}
diff --git a/scripts/makefile.ne12bsd b/scripts/makefile.ne12bsd
index 7bb2d2a..316bf30 100644
--- a/scripts/makefile.ne12bsd
+++ b/scripts/makefile.ne12bsd
@@ -17,7 +17,7 @@
 
 LIB=	png14
 SHLIB_MAJOR=	0
-SHLIB_MINOR=	1.4.18beta02
+SHLIB_MINOR=	1.4.18rc01
 SRCS=	png.c pngset.c pngget.c pngrutil.c pngtrans.c pngwutil.c \
 	pngread.c pngrio.c pngwio.c pngwrite.c pngrtran.c \
 	pngwtran.c pngmem.c pngerror.c pngpread.c
diff --git a/scripts/makefile.netbsd b/scripts/makefile.netbsd
index 04d4cb0..e2e0c4a 100644
--- a/scripts/makefile.netbsd
+++ b/scripts/makefile.netbsd
@@ -17,7 +17,7 @@
 
 LIB=	png
 SHLIB_MAJOR=	3
-SHLIB_MINOR=	1.4.18beta02
+SHLIB_MINOR=	1.4.18rc01
 SRCS=	png.c pngset.c pngget.c pngrutil.c pngtrans.c pngwutil.c \
 	pngread.c pngrio.c pngwio.c pngwrite.c pngrtran.c \
 	pngwtran.c pngmem.c pngerror.c pngpread.c
diff --git a/scripts/makefile.openbsd b/scripts/makefile.openbsd
index c355392..eb07683 100644
--- a/scripts/makefile.openbsd
+++ b/scripts/makefile.openbsd
@@ -11,7 +11,7 @@
 MANDIR= ${PREFIX}/man/cat
 
 SHLIB_MAJOR=	0
-SHLIB_MINOR=	1.4.18beta02
+SHLIB_MINOR=	1.4.18rc01
 
 LIB=	png
 SRCS=	png.c pngerror.c pngget.c pngmem.c pngpread.c \
diff --git a/scripts/png32ce.def b/scripts/png32ce.def
index f381a81..7d06b05 100644
--- a/scripts/png32ce.def
+++ b/scripts/png32ce.def
@@ -15,7 +15,7 @@
  png_get_int_32
 
 EXPORTS
-;Version 1.4.18beta02
+;Version 1.4.18rc01
   png_build_grayscale_palette  @1
 ;  png_check_sig        @2
   png_chunk_error      @3
diff --git a/scripts/pngos2.def b/scripts/pngos2.def
index f7bbfcf..3c3662f 100644
--- a/scripts/pngos2.def
+++ b/scripts/pngos2.def
@@ -2,7 +2,7 @@
 ; PNG.LIB module definition file for OS/2
 ;----------------------------------------
 
-; Version 1.4.18beta02
+; Version 1.4.18rc01
 
 LIBRARY		PNG
 DESCRIPTION	"PNG image compression library for OS/2"
diff --git a/scripts/pngwin.def b/scripts/pngwin.def
index 462216c..9f02ebe 100644
--- a/scripts/pngwin.def
+++ b/scripts/pngwin.def
@@ -5,7 +5,7 @@
 LIBRARY
 
 EXPORTS
-;Version 1.4.18beta02
+;Version 1.4.18rc01
   png_build_grayscale_palette
   png_chunk_error
   png_chunk_warning
