diff --git a/.github/workflows/build-release.yml b/.github/workflows/build-release.yml
index 4dedf146..2ffec4cd 100644
--- a/.github/workflows/build-release.yml
+++ b/.github/workflows/build-release.yml
@@ -23,10 +23,10 @@ jobs:
         os: [ ubuntu-22.04 ]
         platform:
           - 'linux-x64'
-          - 'linux-armv6'
-          - 'linux-armv7'
-          - 'linuxmusl-x64'
-          - 'linuxmusl-arm64v8'
+          #- 'linux-armv6'
+          #- 'linux-armv7'
+          #- 'linuxmusl-x64'
+          #- 'linuxmusl-arm64v8'
           - 'win32-ia32'
           - 'win32-x64'
           - 'win32-arm64v8'
diff --git a/THIRD-PARTY-NOTICES.json b/THIRD-PARTY-NOTICES.json
new file mode 100644
index 00000000..9e792a40
--- /dev/null
+++ b/THIRD-PARTY-NOTICES.json
@@ -0,0 +1,163 @@
+[
+  {
+    "name": "aom",
+    "license": "BSD 2-Clause + Alliance for Open Media Patent License 1.0",
+    "licenseURL": [
+      "https://aomedia.googlesource.com/aom/+/refs/heads/master/LICENSE?format=TEXT",
+      "https://aomedia.googlesource.com/aom/+/refs/heads/master/PATENTS?format=TEXT"
+    ]
+  },
+  {
+    "name": "archive",
+    "license": "BDS 2-Clause",
+    "licenseURL": "https://raw.githubusercontent.com/libarchive/libarchive/master/COPYING"
+  },
+  {
+    "name": "cairo",
+    "license": "MPL-2.0",
+    "licenseURL": "https://raw.githubusercontent.com/freedesktop/cairo/master/COPYING"
+  },
+  {
+    "name": "expat",
+    "license": "MIT",
+    "licenseURL": "https://raw.githubusercontent.com/libexpat/libexpat/master/expat/COPYING"
+  },
+  {
+    "name": "fontconfig",
+    "license": "fontconfig Licence",
+    "licenseURL": "https://gitlab.freedesktop.org/fontconfig/fontconfig/-/raw/master/COPYING"
+  },
+  {
+    "name": "freetype",
+    "license": "freetype Licence",
+    "licenseURL": "https://gitlab.freedesktop.org/freetype/freetype/-/raw/master/LICENSE.TXT"
+  },
+  {
+    "name": "fribidi",
+    "license": "LGPL-2.1",
+    "licenseURL": "https://raw.githubusercontent.com/fribidi/fribidi/master/COPYING"
+  },
+  {
+    "name": "gdk-pixbuf",
+    "license": "LGPL-2.1",
+    "licenseURL": "https://gitlab.gnome.org/GNOME/gdk-pixbuf/-/raw/master/COPYING"
+  },
+  {
+    "name": "glib",
+    "license": "LGPL-2.1",
+    "licenseURL": "https://gitlab.gnome.org/GNOME/glib/-/raw/master/COPYING"
+  },
+  {
+    "name": "harfbuzz",
+    "license": "MIT",
+    "licenseURL": "https://raw.githubusercontent.com/harfbuzz/harfbuzz/master/COPYING"
+  },
+  {
+    "name": "lcms",
+    "license": "MIT",
+    "licenseURL": "https://raw.githubusercontent.com/mm2/Little-CMS/master/COPYING"
+  },
+  {
+    "name": "libde265",
+    "license": "LGPL-3.0",
+    "licenseURL": "https://raw.githubusercontent.com/strukturag/libde265/master/COPYING"
+  },
+  {
+    "name": "libexif",
+    "license": "LGPL-2.1",
+    "licenseURL": "https://raw.githubusercontent.com/libexif/libexif/master/COPYING"
+  },
+  {
+    "name": "libffi",
+    "license": "MIT",
+    "licenseURL": "https://raw.githubusercontent.com/libffi/libffi/master/LICENSE"
+  },
+  {
+    "name": "libheif",
+    "license": "LGPL-3.0",
+    "licenseURL": "https://raw.githubusercontent.com/strukturag/libheif/master/COPYING"
+  },
+  {
+    "name": "libimagequant",
+    "license": "BSD 2-Clause",
+    "licenseURL": "https://raw.githubusercontent.com/lovell/libimagequant/main/COPYRIGHT"
+  },
+  {
+    "name": "mozjpeg",
+    "license": "zlib License, IJG License, BSD-3-Clause",
+    "licenseURL": "https://raw.githubusercontent.com/mozilla/mozjpeg/master/LICENSE.md"
+  },
+  {
+    "name": "libpng",
+    "license": "libpng License",
+    "licenseURL": "https://raw.githubusercontent.com/glennrp/libpng/libpng16/LICENSE"
+  },
+  {
+    "name": "librsvg",
+    "license": "LGPL-2.1",
+    "licenseURL": "https://gitlab.gnome.org/GNOME/librsvg/-/raw/main/COPYING.LIB"
+  },
+  {
+    "name": "libspng",
+    "license": "BSD 2-Clause, libpng License",
+    "licenseURL": "https://raw.githubusercontent.com/randy408/libspng/master/LICENSE"
+  },
+  {
+    "name": "libtiff",
+    "license": "libtiff License",
+    "licenseURL": "https://gitlab.com/libtiff/libtiff/-/raw/master/COPYRIGHT"
+  },
+  {
+    "name": "libvips",
+    "license": "LGPL-2.1",
+    "licenseURL": "https://raw.githubusercontent.com/libvips/libvips/master/COPYING"
+  },
+  {
+    "name": "libwebp",
+    "license": "BSD-3-Clause",
+    "licenseURL": [
+      "https://chromium.googlesource.com/webm/libwebp/+/refs/heads/main/COPYING?format=TEXT",
+      "https://chromium.googlesource.com/webm/libwebp/+/refs/heads/main/PATENTS?format=TEXT"
+    ]
+  },
+  {
+    "name": "libxml2",
+    "license": "MIT",
+    "licenseURL": "https://gitlab.gnome.org/GNOME/libxml2/-/raw/master/Copyright"
+  },
+  {
+    "name": "orc",
+    "license": "orc License",
+    "licenseURL": "https://gitlab.freedesktop.org/gstreamer/orc/-/raw/master/COPYING"
+  },
+  {
+    "name": "openjpeg",
+    "license": "BDS 2-Clause",
+    "licenseURL": "https://raw.githubusercontent.com/uclouvain/openjpeg/master/LICENSE"
+  },
+  {
+    "name": "pango",
+    "license": "GPL-2.0",
+    "licenseURL": "https://gitlab.gnome.org/GNOME/pango/-/raw/master/COPYING"
+  },
+  {
+    "name": "pixman",
+    "license": "MIT",
+    "licenseURL": "https://cgit.freedesktop.org/pixman/plain/COPYING"
+  },
+  {
+    "name": "poppler",
+    "license": "GPL-2.0",
+    "licenseURL": "https://gitlab.freedesktop.org/poppler/poppler/-/raw/master/COPYING"
+  },
+  {
+    "name": "proxy-libintl",
+    "license": "LGPL-2.0",
+    "licenseURL": "https://raw.githubusercontent.com/frida/proxy-libintl/master/COPYING"
+  },
+  {
+    "name": "zlib-ng",
+    "license": "zlib Licence",
+    "licenseURL": "https://raw.githubusercontent.com/zlib-ng/zlib-ng/develop/LICENSE.md"
+  }
+]
diff --git a/build.sh b/build.sh
index 051897ff..a506603e 100755
--- a/build.sh
+++ b/build.sh
@@ -56,10 +56,13 @@ for flavour in darwin-x64 darwin-arm64v8; do
     export FLAGS+=" -Werror=unguarded-availability-new"
 
     if [ $PLATFORM = "darwin-arm64v8" ]; then
-      # ARM64 builds work via cross compilation from an x86_64 machine
-      export CHOST="aarch64-apple-darwin"
-      export FLAGS+=" -target arm64-apple-macos11"
-      export MESON="--cross-file=$PWD/$PLATFORM/meson.ini"
+      if [ "$(uname -m)" != "arm64" ]; then
+        # ARM64 builds work via cross compilation from an x86_64 machine
+        export CHOST="aarch64-apple-darwin"
+        export FLAGS+=" -target arm64-apple-macos11"
+        export MESON="--cross-file=$PWD/$PLATFORM/meson.ini"
+      fi
+
       # macOS 11 Big Sur is the first version to support ARM-based macs
       export MACOSX_DEPLOYMENT_TARGET="11.0"
       # Set SDKROOT to the latest SDK available
diff --git a/build/lin.sh b/build/lin.sh
index 131fd704..35fbed5a 100755
--- a/build/lin.sh
+++ b/build/lin.sh
@@ -86,6 +86,7 @@ export RUSTFLAGS+=" --remap-path-prefix=$CARGO_HOME/registry/="
 # We don't want to use any native libraries, so unset PKG_CONFIG_PATH
 unset PKG_CONFIG_PATH
 
+
 # Common options for curl
 CURL="curl --silent --location --retry 3 --retry-max-time 30"
 
@@ -119,6 +120,11 @@ VERSION_AOM=3.6.1
 VERSION_HEIF=1.16.2
 VERSION_CGIF=0.3.2
 
+# Additional Tropy dependencies
+VERSION_DE265=1.0.12
+VERSION_OPENJPEG=2.5.0
+VERSION_POPPLER=23.08.0
+
 # Remove patch version component
 without_patch() {
   echo "${1%.[[:digit:]]*}"
@@ -177,6 +183,9 @@ version_latest "rsvg" "$VERSION_RSVG" "5420"
 version_latest "aom" "$VERSION_AOM" "17628"
 version_latest "heif" "$VERSION_HEIF" "strukturag/libheif"
 version_latest "cgif" "$VERSION_CGIF" "dloebl/cgif"
+version_latest "de265" "$VERSION_DE265" "11239"
+version_latest "openjpeg" "$VERSION_OPENJPEG" "2550"
+version_latest "poppler" "$VERSION_POPPLER" "3686"
 if [ "$ALL_AT_VERSION_LATEST" = "false" ]; then exit 1; fi
 
 # Download and build dependencies from source
@@ -258,12 +267,19 @@ AOM_AS_FLAGS="${FLAGS}" cmake -G"Unix Makefiles" \
   ..
 make install/strip
 
+mkdir ${DEPS}/de265
+$CURL https://github.com/strukturag/libde265/releases/download/v${VERSION_DE265}/libde265-${VERSION_DE265}.tar.gz | tar xzC ${DEPS}/de265 --strip-components=1
+cd ${DEPS}/de265
+./configure --host=${CHOST} --prefix=${TARGET} --enable-static --disable-shared --disable-dependency-tracking \
+  --disable-dec265 --disable-sherlock265 ${DARWIN_ARM:+--disable-arm}
+make install-strip
+
 mkdir ${DEPS}/heif
 $CURL https://github.com/strukturag/libheif/releases/download/v${VERSION_HEIF}/libheif-${VERSION_HEIF}.tar.gz | tar xzC ${DEPS}/heif --strip-components=1
 cd ${DEPS}/heif
 CFLAGS="${CFLAGS} -O3" CXXFLAGS="${CXXFLAGS} -O3" cmake -G"Unix Makefiles" \
-  -DCMAKE_TOOLCHAIN_FILE=${ROOT}/Toolchain.cmake -DCMAKE_INSTALL_PREFIX=${TARGET} -DCMAKE_INSTALL_LIBDIR=lib -DCMAKE_BUILD_TYPE=Release \
-  -DBUILD_SHARED_LIBS=FALSE -DENABLE_PLUGIN_LOADING=0 -DWITH_EXAMPLES=0 -DWITH_LIBDE265=0 -DWITH_X265=0
+  -DCMAKE_TOOLCHAIN_FILE=${ROOT}/Toolchain.cmake -DCMAKE_PREFIX_PATH=${TARGET} -DCMAKE_INSTALL_PREFIX=${TARGET} -DCMAKE_INSTALL_LIBDIR=lib -DCMAKE_BUILD_TYPE=Release \
+  -DBUILD_SHARED_LIBS=FALSE -DENABLE_PLUGIN_LOADING=0 -DWITH_EXAMPLES=0 -DWITH_LIBDE265=ON -DWITH_X265=0
 make install/strip
 
 mkdir ${DEPS}/jpeg
@@ -432,6 +448,49 @@ CFLAGS="${CFLAGS} -O3" meson setup _build --default-library=static --buildtype=r
   -Dtests=false
 meson install -C _build --tag devel
 
+mkdir -p ${DEPS}/openjpeg/build
+$CURL https://github.com/uclouvain/openjpeg/archive/v${VERSION_OPENJPEG}.tar.gz | tar xzC ${DEPS}/openjpeg --strip-components=1
+cd ${DEPS}/openjpeg/build
+LDFLAGS=${LDFLAGS/\$/} cmake .. -G"Unix Makefiles" \
+  -DCMAKE_TOOLCHAIN_FILE=${ROOT}/Toolchain.cmake -DCMAKE_PREFIX_PATH=${TARGET} -DCMAKE_INSTALL_PREFIX=${TARGET} -DCMAKE_BUILD_TYPE=Release \
+  -DBUILD_SHARED_LIBS=FALSE -DBUILD_CODEC=OFF
+make install/strip
+
+mkdir -p ${DEPS}/poppler/build
+$CURL https://gitlab.freedesktop.org/poppler/poppler/-/archive/poppler-${VERSION_POPPLER}/poppler-poppler-${VERSION_POPPLER}.tar.bz2 | tar xjC ${DEPS}/poppler --strip-components=1
+cd ${DEPS}/poppler/build
+LDFLAGS=${LDFLAGS/\$/} cmake .. -G"Unix Makefiles" \
+  -DCMAKE_TOOLCHAIN_FILE=${ROOT}/Toolchain.cmake\
+  -DCMAKE_PREFIX_PATH=${TARGET} \
+  -DCMAKE_INSTALL_PREFIX=${TARGET} \
+  -DCMAKE_INSTALL_LIBDIR=lib \
+  -DCMAKE_BUILD_TYPE=Release \
+  -DBUILD_SHARED_LIBS=FALSE \
+  -DBUILD_CPP_TESTS=OFF \
+  -DBUILD_GTK_TESTS=OFF \
+  -DBUILD_QT5_TESTS=OFF \
+  -DBUILD_QT6_TESTS=OFF \
+  -DBUILD_MANUAL_TESTS=OFF \
+  -DENABLE_BOOST=OFF \
+  -DENABLE_CMS=lcms2 \
+  -DENABLE_CPP=OFF \
+  -DENABLE_DCTDECODER=libjpeg \
+  -DENABLE_GLIB=ON \
+  -DENABLE_GOBJECT_INTROSPECTION=OFF \
+  -DENABLE_GTK_DOC=OFF \
+  -DENABLE_LIBCURL=OFF \
+  -DENABLE_LIBOPENJPEG=openjpeg2 \
+  -DENABLE_LIBPNG=ON \
+  -DENABLE_LIBTIFF=ON \
+  -DENABLE_QT5=OFF \
+  -DENABLE_QT6=OFF \
+  -DENABLE_UNSTABLE_API_ABI_HEADERS=ON \
+  -DENABLE_UTILS=OFF \
+  -DENABLE_ZLIB=ON \
+  -DENABLE_ZLIB_UNCOMPRESS=OFF \
+  -DEXTRA_WARN=OFF
+make install/strip
+
 mkdir ${DEPS}/vips
 $CURL https://github.com/libvips/libvips/releases/download/v${VERSION_VIPS}/vips-$(without_prerelease $VERSION_VIPS).tar.xz | tar xJC ${DEPS}/vips --strip-components=1
 cd ${DEPS}/vips
@@ -457,8 +516,8 @@ fi
 sed -i'.bak' "/subdir('man')/{N;N;N;N;d;}" meson.build
 CFLAGS="${CFLAGS} -O3" CXXFLAGS="${CXXFLAGS} -O3" meson setup _build --default-library=shared --buildtype=release --strip --prefix=${TARGET} ${MESON} \
   -Ddeprecated=false -Dintrospection=false -Dmodules=disabled -Dcfitsio=disabled -Dfftw=disabled -Djpeg-xl=disabled \
-  -Dmagick=disabled -Dmatio=disabled -Dnifti=disabled -Dopenexr=disabled -Dopenjpeg=disabled -Dopenslide=disabled \
-  -Dpdfium=disabled -Dpoppler=disabled -Dquantizr=disabled \
+  -Dmagick=disabled -Dmatio=disabled -Dnifti=disabled -Dopenexr=disabled -Dopenslide=disabled \
+  -Dpdfium=disabled -Dquantizr=disabled \
   -Dppm=false -Danalyze=false -Dradiance=false \
   ${LINUX:+-Dcpp_link_args="$LDFLAGS -Wl,-Bsymbolic-functions -Wl,--version-script=$DEPS/vips/vips.map $EXCLUDE_LIBS"}
 meson install -C _build --tag runtime,devel
@@ -548,7 +607,7 @@ printf "{\n\
 printf "\"${PLATFORM}\"" >platform.json
 
 # Add third-party notices
-$CURL -O https://raw.githubusercontent.com/lovell/sharp-libvips/main/THIRD-PARTY-NOTICES.md
+$CURL -O https://raw.githubusercontent.com/tropy/sharp-libvips/main/THIRD-PARTY-NOTICES.json
 
 # Create the tarball
 ls -al lib
@@ -557,8 +616,7 @@ mv lib-filtered lib
 tar chzf ${PACKAGE}/libvips-${VERSION_VIPS}-${PLATFORM}.tar.gz \
   include \
   lib \
-  *.json \
-  THIRD-PARTY-NOTICES.md
+  *.json
 
 # Recompress using AdvanceCOMP, ~5% smaller
 advdef --recompress --shrink-insane ${PACKAGE}/libvips-${VERSION_VIPS}-${PLATFORM}.tar.gz
diff --git a/build/win.sh b/build/win.sh
index 58659d63..4af79d60 100755
--- a/build/win.sh
+++ b/build/win.sh
@@ -22,10 +22,15 @@ case ${PLATFORM} in
     ;;
 esac
 
-FILENAME="vips-dev-${ARCH}-web-${VERSION_VIPS}-static.zip"
-URL="https://github.com/libvips/build-win64-mxe/releases/download/v${VERSION_VIPS}/${FILENAME}"
-echo "Downloading $URL"
-$CURL -O $URL
+FILENAME="vips-dev-${ARCH}-tropy-${VERSION_VIPS}.zip"
+
+if [ -f /packaging/$FILENAME ]; then
+  cp /packaging/$FILENAME $FILENAME
+else
+  URL="https://github.com/tropy/build-win64-mxe/releases/download/v${VERSION_VIPS}/${FILENAME}"
+  echo "Downloading $URL"
+  $CURL -O $URL
+fi
 unzip $FILENAME
 
 # Clean and zip
@@ -37,7 +42,7 @@ cp bin/*.dll lib/
 printf "\"${PLATFORM}\"" >platform.json
 
 # Add third-party notices
-$CURL -O https://raw.githubusercontent.com/lovell/sharp-libvips/main/THIRD-PARTY-NOTICES.md
+$CURL -O https://raw.githubusercontent.com/tropy/sharp-libvips/main/THIRD-PARTY-NOTICES.json
 
 echo "Creating tarball"
 tar czf /packaging/libvips-${VERSION_VIPS}-${PLATFORM}.tar.gz \
@@ -47,8 +52,7 @@ tar czf /packaging/libvips-${VERSION_VIPS}-${PLATFORM}.tar.gz \
   lib/libglib-2.0.lib \
   lib/libgobject-2.0.lib \
   lib/*.dll \
-  *.json \
-  THIRD-PARTY-NOTICES.md
+  *.json
 
 # Recompress using AdvanceCOMP, ~5% smaller
 advdef --recompress --shrink-insane /packaging/libvips-${VERSION_VIPS}-${PLATFORM}.tar.gz
@@ -60,4 +64,4 @@ gunzip -c /packaging/libvips-${VERSION_VIPS}-${PLATFORM}.tar.gz | brotli -o /pac
 chmod 644 /packaging/libvips-${VERSION_VIPS}-${PLATFORM}.tar.*
 
 # Remove working directories
-rm -rf lib include *.json THIRD-PARTY-NOTICES.md
+rm -rf lib include *.json
diff --git a/linux-x64/Dockerfile b/linux-x64/Dockerfile
index 98140980..2ce8a7da 100644
--- a/linux-x64/Dockerfile
+++ b/linux-x64/Dockerfile
@@ -11,6 +11,7 @@ ENV \
 
 # Build dependencies
 RUN \
+  ulimit -n 1024 && \
   yum update -y && \
   yum install -y epel-release centos-release-scl && \
   yum group install -y "Development Tools" && \
@@ -34,7 +35,7 @@ RUN \
 
 # Compiler settings
 ENV \
-  PKG_CONFIG="pkg-config --static" \
+  PKG_CONFIG="/usr/bin/pkg-config --static" \
   PLATFORM="linux-x64" \
   FLAGS="-march=x86-64-v2 -mtune=nehalem" \
   MESON="--cross-file=/root/meson.ini"
diff --git a/linux-x64/Toolchain.cmake b/linux-x64/Toolchain.cmake
index d98fafd2..a7a12f78 100644
--- a/linux-x64/Toolchain.cmake
+++ b/linux-x64/Toolchain.cmake
@@ -1,3 +1,6 @@
 set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
 set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
 set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
+
+set(PKG_CONFIG_EXECUTABLE "/usr/bin/pkg-config" CACHE PATH "pkg-config-executable")
+set(PKG_CONFIG_USE_CMAKE_PREFIX_PATH ON)