diff --git a/.gitmodules b/.gitmodules
index 7499938218..389faf7b13 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -12,10 +12,6 @@
[submodule "GSL"]
path = 3rdparty/GSL
url = https://github.com/Microsoft/GSL.git
-[submodule "libpng"]
- path = 3rdparty/libpng
- url = https://github.com/RPCS3/libpng
- ignore = dirty
[submodule "Vulkan/glslang"]
path = Vulkan/glslang
url = https://github.com/KhronosGroup/glslang.git
@@ -42,3 +38,7 @@
[submodule "3rdparty/yaml-cpp"]
path = 3rdparty/yaml-cpp
url = https://github.com/jbeder/yaml-cpp.git
+[submodule "3rdparty/libpng"]
+ path = 3rdparty/libpng
+ url = https://github.com/glennrp/libpng.git
+ ignore = dirty
diff --git a/3rdparty/libpng b/3rdparty/libpng
index 1dcba4d6eb..b78804f9a2 160000
--- a/3rdparty/libpng
+++ b/3rdparty/libpng
@@ -1 +1 @@
-Subproject commit 1dcba4d6eb1bad9500be877cbd1b0442fa92cfa6
+Subproject commit b78804f9a2568b270ebd30eca954ef7447ba92f7
diff --git a/3rdparty/libpng.vcxproj b/3rdparty/libpng.vcxproj
new file mode 100644
index 0000000000..ec222cd953
--- /dev/null
+++ b/3rdparty/libpng.vcxproj
@@ -0,0 +1,339 @@
+
+
+
+
+ Debug Library
+ Win32
+
+
+ Debug
+ Win32
+
+
+ Release Library
+ Win32
+
+
+ Release
+ Win32
+
+
+ Debug Library
+ x64
+
+
+ Release Library
+ x64
+
+
+
+ {D6973076-9317-4EF2-A0B8-B7A18AC0713E}
+ Win32Proj
+ libpng
+
+
+
+
+ DynamicLibrary
+ MultiByte
+ true
+ v140
+
+
+ StaticLibrary
+ MultiByte
+ v140
+
+
+ DynamicLibrary
+ true
+ MultiByte
+ v140
+
+
+ StaticLibrary
+ MultiByte
+ v140
+
+
+ StaticLibrary
+ MultiByte
+ v140
+
+
+ StaticLibrary
+ MultiByte
+ v140
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+ $(ProjectName)16
+
+
+ false
+
+ $(ProjectName)16
+
+
+ false
+
+
+ $(ProjectName)16
+
+
+ false
+
+ $(ProjectName)16
+
+
+ false
+
+ $(ProjectName)16
+ $(SolutionDir)lib/
+ $(SolutionDir)tmp\$(ProjectName)-$(Configuration)-$(Platform)/
+
+
+ false
+
+ $(ProjectName)16
+ $(SolutionDir)lib/
+ $(SolutionDir)tmp\$(ProjectName)-$(Configuration)-$(Platform)/
+
+
+
+ Use
+ $(WarningLevel)
+ false
+ ProgramDatabase
+ EnableFastChecks
+ WIN32;_DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)
+ true
+ true
+ false
+ false
+ pngpriv.h
+ true
+ CompileAsC
+ true
+ $(DisableSpecificWarnings)
+ $(ZLibSrcDir);%(AdditionalIncludeDirectories)
+ $(TreatWarningAsError)
+ Disabled
+ MultiThreadedDebugDLL
+
+
+ Windows
+ true
+ zlib.lib
+ 16
+ $(OutDir)
+
+
+
+
+ Use
+ $(WarningLevel)
+ false
+ ProgramDatabase
+ Disabled
+ EnableFastChecks
+ WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)
+ true
+ true
+ false
+ false
+ pngpriv.h
+ true
+ CompileAsC
+ true
+ $(DisableSpecificWarnings)
+ $(ZLibSrcDir);%(AdditionalIncludeDirectories)
+ $(TreatWarningAsError)
+ MultiThreadedDebug
+
+
+ Windows
+ true
+
+
+
+
+ $(WarningLevel)
+ Use
+ ProgramDatabase
+ true
+ true
+ WIN32;NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)
+ false
+ false
+ pngpriv.h
+ true
+ CompileAsC
+ true
+ false
+ $(DisableSpecificWarnings)
+ $(ZLibSrcDir);%(AdditionalIncludeDirectories)
+ $(TreatWarningAsError)
+ Full
+
+
+ Windows
+ true
+ true
+ true
+ zlib.lib
+ 16
+ $(OutDir)
+
+
+
+
+ $(WarningLevel)
+ Use
+ ProgramDatabase
+ MultiThreaded
+ true
+ true
+ WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)
+ false
+ false
+ pngpriv.h
+ true
+ CompileAsC
+ true
+ false
+ $(DisableSpecificWarnings)
+ $(ZLibSrcDir);%(AdditionalIncludeDirectories)
+ $(TreatWarningAsError)
+ Full
+ true
+
+
+ Windows
+ true
+ true
+ true
+
+
+ true
+
+
+
+
+ Use
+ $(WarningLevel)
+ false
+ ProgramDatabase
+ Disabled
+ EnableFastChecks
+ WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)
+ true
+ true
+ false
+ false
+ pngpriv.h
+ true
+ CompileAsC
+ true
+ $(DisableSpecificWarnings)
+ $(ZLibSrcDir);%(AdditionalIncludeDirectories)
+ $(TreatWarningAsError)
+ MultiThreadedDebug
+
+
+ Windows
+ true
+
+
+
+
+ $(WarningLevel)
+ Use
+ ProgramDatabase
+ MultiThreaded
+ true
+ true
+ WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)
+ false
+ false
+ pngpriv.h
+ true
+ CompileAsC
+ true
+ false
+ $(DisableSpecificWarnings)
+ $(ZLibSrcDir);%(AdditionalIncludeDirectories)
+ $(TreatWarningAsError)
+ Full
+ true
+
+
+ Windows
+ true
+ true
+ true
+
+
+ true
+
+
+
+
+ Create
+ Create
+ Create
+ Create
+ Create
+ Create
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ true
+ true
+ true
+
+
+
+
+
+
\ No newline at end of file
diff --git a/3rdparty/pnglibconf.vcxproj b/3rdparty/pnglibconf.vcxproj
new file mode 100644
index 0000000000..1bd53348bf
--- /dev/null
+++ b/3rdparty/pnglibconf.vcxproj
@@ -0,0 +1,104 @@
+
+
+
+
+ Release
+ Win32
+
+
+ Release
+ x64
+
+
+
+ {EB33566E-DA7F-4D28-9077-88C0B7C77E35}
+ pnglibconf
+
+
+
+ Application
+ false
+ true
+ MultiByte
+ v140
+
+
+ Application
+ false
+ true
+ MultiByte
+ v140
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Build
+
+
+ Build
+
+
+
+ $(WarningLevel)
+ MaxSpeed
+ true
+ true
+
+
+ true
+ true
+ true
+
+
+ copy ..\..\..\scripts\pnglibconf.h.prebuilt ..\..\..\pnglibconf.h
+
+
+ Generating pnglibconf.h
+
+
+ ..\..\..\pnglibconf.h
+
+
+ ..\..\..\scripts\pnglibconf.h.prebuilt
+
+
+
+
+ $(WarningLevel)
+ MaxSpeed
+ true
+ true
+
+
+ true
+ true
+ true
+
+
+ copy .\libpng\scripts\pnglibconf.h.prebuilt .\libpng\pnglibconf.h
+
+
+ Generating pnglibconf.h
+
+
+ .\libpng\pnglibconf.h
+
+
+ .\libpng\scripts\pnglibconf.h.prebuilt
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/zlib.props b/3rdparty/zlib.props
similarity index 97%
rename from zlib.props
rename to 3rdparty/zlib.props
index cee4f2b086..8a99353108 100644
--- a/zlib.props
+++ b/3rdparty/zlib.props
@@ -2,7 +2,7 @@