diff --git a/AMDiS/AMDISConfig.cmake.in b/AMDiS/AMDISConfig.cmake.in
index 0730cac200484df06fc77ace2f7dd87b188cd19d..c801a758b8a2a0fa431597106fe3e03a2e7ed49e 100644
--- a/AMDiS/AMDISConfig.cmake.in
+++ b/AMDiS/AMDISConfig.cmake.in
@@ -61,6 +61,7 @@ endif(Boost_FOUND)
 set(AMDIS_NEED_ZOLTAN @ENABLE_ZOLTAN@)
 set(AMDIS_HAS_PARALLEL_DOMAIN @ENABLE_PARALLEL_DOMAIN@)
 set(AMDIS_NEED_UMFPACK @ENABLE_UMFPACK@)
+set(AMDIS_NEED_PNG @ENABLE_PNG@)
 set(AMDIS_NEED_BDDCML @ENABLE_BDDCML@)
 set(AMDIS_NEED_MKL @ENABLE_MKL@)
 set(AMDIS_USE_FILE ${AMDIS_DIR}/AMDISUse.cmake)
@@ -102,6 +103,20 @@ if(AMDIS_NEED_UMFPACK)
 	endif()
 endif(AMDIS_NEED_UMFPACK)
 
+if(AMDIS_NEED_PNG)
+	set(AMDIS_PNG_PATH @PNG_PATH@)
+	list(APPEND AMDIS_INCLUDE_DIRS ${AMDIS_PNG_PATH})
+
+	find_library(PNG_LIB png
+		HINTS ENV LIBRARY_PATH
+		DOC "The PNG library")
+	if(PNG_LIB)
+		list(APPEND AMDIS_LIBRARIES ${PNG_LIB})
+	else()
+		message(FATAL_ERROR "Could not find the PNG library")
+	endif()
+endif(AMDIS_NEED_PNG)
+	
 if(AMDIS_NEED_BDDCML)
 	set(AMDIS_BDDCML_PATH @BDDCML_PATH@)
 	list(APPEND AMDIS_INCLUDE_DIRS ${AMDIS_BDDCML_PATH})
diff --git a/AMDiS/CMakeLists.txt b/AMDiS/CMakeLists.txt
index 2dfc618e85641bc8413e75121602e5cf6892e4f1..f131a603e86a644259d11acdbf1a1072d80a648c 100644
--- a/AMDiS/CMakeLists.txt
+++ b/AMDiS/CMakeLists.txt
@@ -36,6 +36,7 @@ SET(ENABLE_PARALLEL_DOMAIN "OFF" CACHE STRING "use parallel domain decomposition
 option(USE_PETSC_DEV false)
 option(ENABLE_ZOLTAN false)
 option(ENABLE_UMFPACK "Use of UMFPACK solver" false)
+option(ENABLE_PNG "use png reader/writer" false)
 option(ENABLE_BDDCML "Use of BDDCML library" false)
 
 if(ENABLE_INTEL)
@@ -157,6 +158,7 @@ SET(AMDIS_SRC ${SOURCE_DIR}/AdaptBase.cc
 	      ${SOURCE_DIR}/io/MacroInfo.cc
 	      ${SOURCE_DIR}/io/MacroReader.cc
 	      ${SOURCE_DIR}/io/MacroWriter.cc
+	      ${SOURCE_DIR}/io/PngReader.cc
 	      ${SOURCE_DIR}/io/PngWriter.cc
 	      ${SOURCE_DIR}/io/PovrayWriter.cc
 	      ${SOURCE_DIR}/io/ValueReader.cc
@@ -277,12 +279,26 @@ if(ENABLE_UMFPACK)
 		include_directories(${UMFPACK_PATH} ${UFCONFIG_PATH} ${AMD_PATH})
 		list(APPEND COMPILEFLAGS "-DHAVE_UMFPACK=1" "-DMTL_HAS_UMFPACK")
 	else()
-		message(FATAL_ERROR "Could not find the UMFPACK headers.")
+		message(FATAL_ERROR "Could not find the UMFPACK header umfpack.h.")
 	endif()
 	SET(RPM_DEPEND_STR "blas")
 endif(ENABLE_UMFPACK)
 
 
+if(ENABLE_PNG)
+	find_file(PNG_H png.h
+			    HINTS ENV CPATH /usr/include
+			    DOC "headerfile png.h for PNG-READER")
+	if(PNG_H)
+		get_filename_component(PNG_PATH ${PNG_H} PATH)
+		include_directories(${PNG_PATH})
+		list(APPEND COMPILEFLAGS "-DHAVE_PNG=1")
+	else()
+		message(FATAL_ERROR "Could not find the PNG header png.h.")
+	endif()
+endif(ENABLE_PNG)
+
+
 if(ENABLE_BDDCML)
 	SET(BDDCML_LINK_LIST "" CACHE STRING "Further libraries to be linked with BDDCML")
 		
diff --git a/AMDiS/src/io/PngReader.cc b/AMDiS/src/io/PngReader.cc
index 2816499c52cd90c0cff066bcc562330567332ed8..207049affdfdbab8035158c9882eb77d32da7b90 100644
--- a/AMDiS/src/io/PngReader.cc
+++ b/AMDiS/src/io/PngReader.cc
@@ -9,6 +9,8 @@
 //
 // See also license.opensource.txt in the distribution.
 
+#if defined HAVE_PNG
+
 #include "PngReader.h"
 #include "png.h"
 
@@ -64,7 +66,6 @@ namespace AMDiS {
     cout << "Bytes per pixel: " << bytesPerPixel << endl;
 
     double value = 0;
-    const DOFAdmin* admin = vec->getFeSpace()->getAdmin();
 
     const BasisFunction *basFcts = vec->getFeSpace()->getBasisFcts();
     int numBasFcts = basFcts->getNumber();
@@ -111,3 +112,5 @@ namespace AMDiS {
   };
   
 };
+
+#endif
diff --git a/AMDiS/src/io/PngReader.h b/AMDiS/src/io/PngReader.h
index 8fcee820d76f6886dcea07a1a188e40647eea5f3..ce31d79599365e11f8e230da17b4edcc0acd515f 100644
--- a/AMDiS/src/io/PngReader.h
+++ b/AMDiS/src/io/PngReader.h
@@ -23,6 +23,8 @@
 #ifndef AMDIS_PNGREADER_H
 #define AMDIS_PNGREADER_H
 
+#if defined HAVE_PNG
+
 #include "AMDiS.h"
 
 namespace AMDiS {
@@ -67,3 +69,5 @@ namespace AMDiS {
 }
 
 #endif
+
+#endif
diff --git a/AMDiS/src/io/PngWriter.cc b/AMDiS/src/io/PngWriter.cc
index 62d09a3d8baec226c551b2154af3677bc76ce1ea..bbdaae2cb8442342a1c62ed040690bbb223c0542 100644
--- a/AMDiS/src/io/PngWriter.cc
+++ b/AMDiS/src/io/PngWriter.cc
@@ -10,7 +10,7 @@
 // See also license.opensource.txt in the distribution.
 
 
-#ifdef HAVE_PNG
+#if defined HAVE_PNG
 
 #include <float.h>
 #include <png.h>
@@ -31,8 +31,8 @@ namespace AMDiS {
     TraverseStack stack;
     ElInfo *elInfo = stack.traverseFirst(dataCollector->getMesh(), -1, 
 					 Mesh::CALL_LEAF_EL | Mesh::FILL_COORDS);
-    double pointdist = min(absteukl(elInfo->getCoord(0), elInfo->getCoord(1)),
-			   min(absteukl(elInfo->getCoord(1), elInfo->getCoord(2)),
+    double pointdist = std::min(absteukl(elInfo->getCoord(0), elInfo->getCoord(1)),
+			   std::min(absteukl(elInfo->getCoord(1), elInfo->getCoord(2)),
 			       absteukl(elInfo->getCoord(2), elInfo->getCoord(0))));
     while (elInfo) {
       for (int i = 0; i < 3; i++) {
diff --git a/AMDiS/src/io/PngWriter.h b/AMDiS/src/io/PngWriter.h
index 7fce976398fd2e0fc5e70ef04b3459bc9dac8d81..497954a5189afa62bf597deb6a5973214ddbb5ee 100644
--- a/AMDiS/src/io/PngWriter.h
+++ b/AMDiS/src/io/PngWriter.h
@@ -23,7 +23,7 @@
 #ifndef AMDIS_PNGWRITER_H
 #define AMDIS_PNGWRITER_H
 
-#ifdef HAVE_PNG
+#if defined HAVE_PNG
 
 #include "BasisFunction.h"
 #include "DataCollector.h"