diff --git a/package/libpng/libpng.mk b/package/libpng/libpng.mk
index 4cf86d141d..21ec6fb7d8 100644
--- a/package/libpng/libpng.mk
+++ b/package/libpng/libpng.mk
@@ -50,7 +50,10 @@ $(LIBPNG_DIR)/.configured: $(LIBPNG_DIR)/.unpacked
 		--target=$(GNU_TARGET_NAME) \
 		--host=$(GNU_TARGET_NAME) \
 		--build=$(GNU_HOST_NAME) \
-		--prefix=/usr \
+		--prefix=$(STAGING_DIR) \
+		--exec_prefix=$(STAGING_DIR) \
+		--libdir=$(STAGING_DIR)/lib \
+		--includedir=$(STAGING_DIR)/include \
 		--without-libpng-compat \
 	);
 	touch $(LIBPNG_DIR)/.configured
@@ -60,11 +63,21 @@ $(LIBPNG_DIR)/.compiled: $(LIBPNG_DIR)/.configured
 	touch $(LIBPNG_DIR)/.compiled
 
 $(STAGING_DIR)/lib/libpng.so: $(LIBPNG_DIR)/.compiled
-	$(MAKE) \
-		-C $(LIBPNG_DIR) \
-		DESTDIR=$(STAGING_DIR) \
-		prefix=/ \
-		install
+	$(MAKE) prefix=$(STAGING_DIR) \
+	    exec_prefix=$(STAGING_DIR) \
+	    bindir=$(STAGING_DIR)/bin \
+	    sbindir=$(STAGING_DIR)/sbin \
+	    libexecdir=$(STAGING_DIR)/libexec \
+	    datadir=$(STAGING_DIR)/share \
+	    sysconfdir=$(STAGING_DIR)/etc \
+	    sharedstatedir=$(STAGING_DIR)/com \
+	    localstatedir=$(STAGING_DIR)/var \
+	    libdir=$(STAGING_DIR)/lib \
+	    includedir=$(STAGING_DIR)/include \
+	    oldincludedir=$(STAGING_DIR)/include \
+	    infodir=$(STAGING_DIR)/info \
+	    mandir=$(STAGING_DIR)/man \
+	    -C $(LIBPNG_DIR) install;
 	touch -c $(STAGING_DIR)/lib/libpng.so
 
 $(TARGET_DIR)/usr/lib/libpng.so: $(STAGING_DIR)/lib/libpng.so