diff --git a/configure b/configure
index f25fbe6b00a66b0f4d8f4b064520d5d7373a4855..cc67602a669646fa7d6108584cd45fb1f66a72d9 100755
--- a/configure
+++ b/configure
@@ -6818,6 +6818,7 @@ done
 
 
 
+
 
 
 for ac_header in \
@@ -6873,6 +6874,7 @@ for ac_header in \
 	netinet/tcp_fsm.h \
 	openssl/err.h \
 	openssl/ssl.h \
+	png.h \
 	poll.h \
 	process.h \
 	pthread.h \
@@ -14066,6 +14068,88 @@ cat >>confdefs.h <<_ACEOF
 _ACEOF
 
 
+fi
+
+fi
+
+if test "$ac_cv_header_png_h" = "yes"
+then
+    { echo "$as_me:$LINENO: checking for -lpng" >&5
+echo $ECHO_N "checking for -lpng... $ECHO_C" >&6; }
+if test "${ac_cv_lib_soname_png+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_soname_save_LIBS=$LIBS
+LIBS="-lpng  $LIBS"
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char png_create_read_struct ();
+int
+main ()
+{
+return png_create_read_struct ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  case "$LIBEXT" in
+    dll) ;;
+    dylib) ac_cv_lib_soname_png=`otool -L conftest$ac_exeext | grep "libpng[0-9]*\\.[0-9A-Za-z.]*dylib" | sed -e "s/^.*\/\(libpng[0-9]*\.[0-9A-Za-z.]*dylib\).*$/\1/"';2,$d'` ;;
+    *) ac_cv_lib_soname_png=`$ac_cv_path_LDD conftest$ac_exeext | grep "libpng[0-9]*\\.$LIBEXT" | sed -e "s/^.*\(libpng[0-9]*\.$LIBEXT[^	 ]*\).*$/\1/"';2,$d'` ;;
+  esac
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+  LIBS=$ac_check_soname_save_LIBS
+fi
+if test "x$ac_cv_lib_soname_png" = "x"; then
+  { echo "$as_me:$LINENO: result: not found" >&5
+echo "${ECHO_T}not found" >&6; }
+
+else
+  { echo "$as_me:$LINENO: result: $ac_cv_lib_soname_png" >&5
+echo "${ECHO_T}$ac_cv_lib_soname_png" >&6; }
+
+cat >>confdefs.h <<_ACEOF
+#define SONAME_LIBPNG "$ac_cv_lib_soname_png"
+_ACEOF
+
+
 fi
 
 fi
diff --git a/configure.ac b/configure.ac
index d4e4f12e2e4d7cd6cf91883a72e8f7cf0b9d1715..f983e8b6cf6477b6aa96e9787214bfc5321c879f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -209,6 +209,7 @@ AC_CHECK_HEADERS(\
 	netinet/tcp_fsm.h \
 	openssl/err.h \
 	openssl/ssl.h \
+	png.h \
 	poll.h \
 	process.h \
 	pthread.h \
@@ -998,6 +999,12 @@ then
     WINE_CHECK_SONAME(jpeg,jpeg_start_decompress)
 fi
 
+dnl **** Check for libpng ****
+if test "$ac_cv_header_png_h" = "yes"
+then
+    WINE_CHECK_SONAME(png,png_create_read_struct,,,,[[libpng[[0-9]]*]])
+fi
+
 dnl **** Check for gcc specific options ****
 
 AC_SUBST(EXTRACFLAGS,"")
diff --git a/include/config.h.in b/include/config.h.in
index a96a9c3a26d9b4978dbc76b91bce18363c2fee49..3cd481fca212ca4dbf0a8f815d412320c159002b 100644
--- a/include/config.h.in
+++ b/include/config.h.in
@@ -480,6 +480,9 @@
 /* Define to 1 if the system has the type `pid_t'. */
 #undef HAVE_PID_T
 
+/* Define to 1 if you have the <png.h> header file. */
+#undef HAVE_PNG_H
+
 /* Define to 1 if you have the `poll' function. */
 #undef HAVE_POLL
 
@@ -996,6 +999,9 @@
 /* Define to the soname of the libncurses library. */
 #undef SONAME_LIBNCURSES
 
+/* Define to the soname of the libpng library. */
+#undef SONAME_LIBPNG
+
 /* Define to the soname of the libsane library. */
 #undef SONAME_LIBSANE