diff --git a/app/src/main/java/org/thoughtcrime/securesms/mms/SignalGlideComponents.java b/app/src/main/java/org/thoughtcrime/securesms/mms/SignalGlideComponents.java
index 0fa3e0fc61..fa574d2818 100644
--- a/app/src/main/java/org/thoughtcrime/securesms/mms/SignalGlideComponents.java
+++ b/app/src/main/java/org/thoughtcrime/securesms/mms/SignalGlideComponents.java
@@ -2,6 +2,7 @@ package org.thoughtcrime.securesms.mms;
import android.content.Context;
import android.graphics.Bitmap;
+import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import androidx.annotation.NonNull;
@@ -10,6 +11,7 @@ import com.bumptech.glide.Glide;
import com.bumptech.glide.Registry;
import com.bumptech.glide.load.model.GlideUrl;
import com.bumptech.glide.load.model.UnitModelLoader;
+import com.bumptech.glide.load.resource.bitmap.BitmapDrawableEncoder;
import com.bumptech.glide.load.resource.bitmap.Downsampler;
import com.bumptech.glide.load.resource.bitmap.StreamBitmapDecoder;
import com.bumptech.glide.load.resource.gif.ByteBufferGifDecoder;
@@ -64,12 +66,15 @@ public class SignalGlideComponents implements RegisterGlideComponents {
registry.prepend(InputStream.class, new EncryptedCacheEncoder(secret, glide.getArrayPool()));
- registry.prepend(Bitmap.class, new EncryptedBitmapResourceEncoder(secret));
registry.prepend(File.class, Bitmap.class, new EncryptedCacheDecoder<>(secret, new StreamBitmapDecoder(new Downsampler(registry.getImageHeaderParsers(), context.getResources().getDisplayMetrics(), glide.getBitmapPool(), glide.getArrayPool()), glide.getArrayPool())));
registry.prepend(GifDrawable.class, new EncryptedGifDrawableResourceEncoder(secret));
registry.prepend(File.class, GifDrawable.class, new EncryptedCacheDecoder<>(secret, new StreamGifDecoder(registry.getImageHeaderParsers(), new ByteBufferGifDecoder(context, registry.getImageHeaderParsers(), glide.getBitmapPool(), glide.getArrayPool()), glide.getArrayPool())));
+ EncryptedBitmapResourceEncoder encryptedBitmapResourceEncoder = new EncryptedBitmapResourceEncoder(secret);
+ registry.prepend(Bitmap.class, new EncryptedBitmapResourceEncoder(secret));
+ registry.prepend(BitmapDrawable.class, new BitmapDrawableEncoder(glide.getBitmapPool(), encryptedBitmapResourceEncoder));
+
ApngBufferCacheDecoder apngBufferCacheDecoder = new ApngBufferCacheDecoder();
ApngStreamCacheDecoder apngStreamCacheDecoder = new ApngStreamCacheDecoder(apngBufferCacheDecoder);
diff --git a/dependencies.gradle b/dependencies.gradle
index b4312bde57..f66f16f816 100644
--- a/dependencies.gradle
+++ b/dependencies.gradle
@@ -12,7 +12,7 @@ dependencyResolutionManagement {
version('androidx-navigation', '2.6.0')
version('androidx-window', '1.0.0')
version('exoplayer', '2.19.0')
- version('glide', '4.13.2')
+ version('glide', '4.15.1')
version('kotlin', '1.8.10')
version('libsignal-client', '0.31.0')
version('mp4parser', '1.9.39')
diff --git a/gradle/verification-metadata.xml b/gradle/verification-metadata.xml
index 37134dd072..515fadff7d 100644
--- a/gradle/verification-metadata.xml
+++ b/gradle/verification-metadata.xml
@@ -2190,29 +2190,35 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
-
-
-
+
+
+
+
+
+
-
-
-
+
+
+
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+