diff --git a/assets/AppRun b/assets/AppRun
new file mode 100755
index 00000000..76bd27dd
--- /dev/null
+++ b/assets/AppRun
@@ -0,0 +1,13 @@
+#!/bin/bash
+temp_gdk_loaders_cache="$(mktemp)"
+function atexit {
+  [ -n "$temp_gdk_loaders_cache" ] && rm -f "$temp_gdk_loaders_cache"
+}
+trap atexit EXIT
+
+appdir_lib_escaped="$(printf '%s\n' "$APPDIR/usr/lib" | sed -e 's/[\/&]/\\&/g')"
+sed "s,%RETARGET%,$appdir_lib_escaped," \
+    "$APPDIR/usr/lib/loaders.cache" > "$temp_gdk_loaders_cache"
+export GDK_PIXBUF_MODULE_FILE="$temp_gdk_loaders_cache"
+
+"$APPDIR/usr/bin/oneshot"
diff --git a/make-appimage.sh b/make-appimage.sh
index 69ca6633..0648cb43 100755
--- a/make-appimage.sh
+++ b/make-appimage.sh
@@ -2,6 +2,7 @@
 
 LINUXDEPLOY=linuxdeploy-x86_64.AppImage
 APPIMAGETOOL=appimagetool-x86_64.AppImage
+GDK_LOADERS_PATH=/usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0/2.10.0
 
 if [ $# -lt 6 ]; then
   echo "usage: make-appimage.sh SOURCE_PATH CONAN_INSTALL_PATH GAME_PATH EXTRA_UNIX_CONTENT_PATH JOURNAL_FILE APPIMAGE_FILE"
@@ -24,20 +25,56 @@ trap atexit EXIT
 
 $LINUXDEPLOY -e "$conan_install_path/bin/oneshot" \
 	     -l "$conan_install_path/lib/libruby.so.2.5.3" \
+	     -l "$GDK_LOADERS_PATH/loaders/io-wmf.so" \
+             -l "$GDK_LOADERS_PATH/loaders/libpixbufloader-bmp.so" \
+	     -l "$GDK_LOADERS_PATH/loaders/libpixbufloader-icns.so" \
+	     -l "$GDK_LOADERS_PATH/loaders/libpixbufloader-jpeg.so" \
+	     -l "$GDK_LOADERS_PATH/loaders/libpixbufloader-pnm.so" \
+	     -l "$GDK_LOADERS_PATH/loaders/libpixbufloader-svg.so" \
+	     -l "$GDK_LOADERS_PATH/loaders/libpixbufloader-tiff.so" \
+	     -l "$GDK_LOADERS_PATH/loaders/libpixbufloader-xpm.so" \
+	     -l "$GDK_LOADERS_PATH/loaders/libpixbufloader-ani.so" \
+	     -l "$GDK_LOADERS_PATH/loaders/libpixbufloader-gif.so" \
+	     -l "$GDK_LOADERS_PATH/loaders/libpixbufloader-ico.so" \
+	     -l "$GDK_LOADERS_PATH/loaders/libpixbufloader-png.so" \
+	     -l "$GDK_LOADERS_PATH/loaders/libpixbufloader-qtif.so" \
+	     -l "$GDK_LOADERS_PATH/loaders/libpixbufloader-tga.so" \
+	     -l "$GDK_LOADERS_PATH/loaders/libpixbufloader-xbm.so" \
 	     -i "$source_path/assets/oneshot.png" \
 	     -d "$source_path/assets/oneshot.desktop" \
+	     --custom-apprun="$source_path/assets/AppRun" \
 	     --appdir "$appdir"
 
 # Bundle game data
 cp -af "$journal_file" "$appdir/usr/bin/_______"
 cp -af "$source_path/assets/journal.png" "$appdir/usr/bin/_______.png"
 for dir in Audio Data Fonts Graphics Languages Wallpaper testing_saves testing_saves_postgame; do
-  cp -ra "$game_path/$dir" "$appdir/usr/bin/"
+  [ -d "$game_path/$dir/" ] && rsync -a "$game_path/$dir" "$appdir/usr/bin/"
   [ -d "$unix_content_path/$dir/" ] && rsync -a "$unix_content_path/$dir/" "$appdir/usr/bin/$dir/"
 done
-find "$appdir/usr/bin" \( -iname '*.bmp' -o -iname 'thumbs.db' -o -iname '*.ini' \) -delete
+# GDK pixbuf retarget nonsense
+sed "s,$GDK_LOADERS_PATH/loaders/,%RETARGET%/," \
+    "$GDK_LOADERS_PATH/loaders.cache" > "$appdir/usr/lib/loaders.cache"
+# Delete some files
+find "$appdir/usr/bin" -type f \( \
+     -iname '*.bmp' -o \
+     -iname 'thumbs.db' -o \
+     -iname '*.ini' -o \
+     -iname '*conflicted*' \) \
+     -delete
 # copyright :(
-find "$appdir/usr/bin" \( -iname '*.loc' -a \! -iname 'en.loc' \) -delete
+find "$appdir/usr/bin" -type f \( -iname '*.loc' -a \! -iname 'en.loc' \) -delete
+# more copyright :(
+find "$appdir/usr/bin" -type d \( \
+     -iname 'es' -o \
+     -iname 'fr' -o \
+     -iname 'ja' -o \
+     -iname 'ko' -o \
+     -iname 'pt_BR' -o \
+     -iname 'zh_CN' \) \
+     -exec rm -rf {} +
+# International fonts are now taking up space
+find "$appdir/usr/bin/Fonts" -type f \! -iname 'TerminusTTF-Bold.ttf' -delete
 cp -af "$conan_install_path/bin/Data/xScripts.rxdata" "$appdir/usr/bin/Data/"
 
 # Create AppImage