diff --git a/app/src/main/java/com/futo/circles/extensions/ImageViewExtensions.kt b/app/src/main/java/com/futo/circles/extensions/ImageViewExtensions.kt
index 8df8d7bff444cbc22336f58b90615e03fffe1899..e391a89e2430c65b759f439c43340fae064efe4d 100644
--- a/app/src/main/java/com/futo/circles/extensions/ImageViewExtensions.kt
+++ b/app/src/main/java/com/futo/circles/extensions/ImageViewExtensions.kt
@@ -1,5 +1,6 @@
 package com.futo.circles.extensions
 
+import android.util.Size
 import android.widget.ImageView
 import com.bumptech.glide.Glide
 import com.bumptech.glide.request.target.Target
@@ -11,31 +12,27 @@ import com.futo.circles.provider.MatrixSessionProvider
 
 fun ImageView.loadImage(
     url: String?,
-    size: Int = Target.SIZE_ORIGINAL
+    size: Size? = null
 ) {
     val resolvedUrl = MatrixSessionProvider.currentSession?.resolveUrl(url, size)
     Glide.with(this)
         .load(resolvedUrl)
-        .override(size, size)
         .fitCenter()
         .into(this)
 }
 
 
-fun ImageView.loadEncryptedImage(content: ImageContent, size: Int = Target.SIZE_ORIGINAL) {
-    val request = content.elementToDecrypt?.let {
+fun ImageView.loadEncryptedImage(
+    content: ImageContent, size: Size? = null
+) {
+    content.elementToDecrypt?.let {
         GlideApp
             .with(context)
             .load(content)
-    } ?: run {
-        val resolvedUrl = MatrixSessionProvider.currentSession?.resolveUrl(content.fileUrl, size)
-        GlideApp
-            .with(context)
-            .load(resolvedUrl)
-    }
-    request.override(size, size)
-        .fitCenter()
-        .into(this)
+            .override(size?.width ?: Target.SIZE_ORIGINAL, size?.height ?: Target.SIZE_ORIGINAL)
+            .fitCenter()
+            .into(this)
+    } ?: loadImage(content.fileUrl, size)
 }
 
 
diff --git a/app/src/main/java/com/futo/circles/extensions/MatrixSessionExtensions.kt b/app/src/main/java/com/futo/circles/extensions/MatrixSessionExtensions.kt
index fcb049b5eb6b76769d4f5ffe6567a5a5ff09d41e..dab47c28ffb4f2b0313de8e595f2b6c7ee0ef3e1 100644
--- a/app/src/main/java/com/futo/circles/extensions/MatrixSessionExtensions.kt
+++ b/app/src/main/java/com/futo/circles/extensions/MatrixSessionExtensions.kt
@@ -1,6 +1,6 @@
 package com.futo.circles.extensions
 
-import com.bumptech.glide.request.target.Target
+import android.util.Size
 import com.futo.circles.provider.MatrixSessionProvider
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.Dispatchers
@@ -19,16 +19,19 @@ val Session.coroutineScope: CoroutineScope
         }
     }
 
-fun Session.resolveUrl(url: String?, size: Int = Target.SIZE_ORIGINAL): String? {
+fun Session.resolveUrl(
+    url: String?,
+    size: Size? = null
+): String? {
     val resolver = MatrixSessionProvider.currentSession?.contentUrlResolver()
 
-    return if (size == Target.SIZE_ORIGINAL) {
-        resolver?.resolveFullSize(url)
-    } else {
+    return size?.let {
         resolver?.resolveThumbnail(
             url,
-            size, size,
+            size.width, size.height,
             ContentUrlResolver.ThumbnailMethod.SCALE
         )
+    } ?: run {
+        resolver?.resolveFullSize(url)
     }
 }
diff --git a/app/src/main/java/com/futo/circles/model/PostContent.kt b/app/src/main/java/com/futo/circles/model/PostContent.kt
index 58a06760b010f464a7ececb7384445aa9b0f7305..c6671431e73a95b4a690e849bf285d8b2c0ea5b0 100644
--- a/app/src/main/java/com/futo/circles/model/PostContent.kt
+++ b/app/src/main/java/com/futo/circles/model/PostContent.kt
@@ -21,4 +21,6 @@ data class ImageContent(
     val elementToDecrypt: ElementToDecrypt?,
     val width: Int,
     val height: Int
-) : PostContent(PostContentType.IMAGE_CONTENT)
\ No newline at end of file
+) : PostContent(PostContentType.IMAGE_CONTENT) {
+    val aspectRatio = width.toFloat() / height.toFloat()
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/futo/circles/ui/groups/list/GroupViewHolder.kt b/app/src/main/java/com/futo/circles/ui/groups/list/GroupViewHolder.kt
index 6c0d0bb9ae09625e66b4fcd0fa7368dfb59f7b87..e0e77770b7f5a892351540b07a1d61a14ea834b7 100644
--- a/app/src/main/java/com/futo/circles/ui/groups/list/GroupViewHolder.kt
+++ b/app/src/main/java/com/futo/circles/ui/groups/list/GroupViewHolder.kt
@@ -1,6 +1,7 @@
 package com.futo.circles.ui.groups.list
 
 import android.text.format.DateUtils
+import android.util.Size
 import android.view.ViewGroup
 import androidx.recyclerview.widget.RecyclerView
 import com.futo.circles.R
@@ -28,7 +29,7 @@ class GroupViewHolder(
 
     fun bind(data: GroupListItem) {
         with(binding) {
-            ivGroup.loadImage(data.avatarUrl, ivGroup.height)
+            ivGroup.loadImage(data.avatarUrl, Size(ivGroup.width, ivGroup.height))
 
             ivLock.setIsEncryptedIcon(data.isEncrypted)
 
diff --git a/app/src/main/java/com/futo/circles/ui/groups/timeline/list/GroupTimelineViewHolder.kt b/app/src/main/java/com/futo/circles/ui/groups/timeline/list/GroupTimelineViewHolder.kt
index 4bda5a906c690681764420b4c2438f65b8728eab..36cf47c6c6936f94a92c4a2be76842c5872c387d 100644
--- a/app/src/main/java/com/futo/circles/ui/groups/timeline/list/GroupTimelineViewHolder.kt
+++ b/app/src/main/java/com/futo/circles/ui/groups/timeline/list/GroupTimelineViewHolder.kt
@@ -1,5 +1,6 @@
 package com.futo.circles.ui.groups.timeline.list
 
+import android.util.Size
 import android.view.View
 import android.view.ViewGroup
 import androidx.recyclerview.widget.RecyclerView
@@ -69,7 +70,9 @@ class ImagePostViewHolder(
         super.bind(post)
 
         (post.content as? ImageContent)?.let {
-            binding.ivContent.loadEncryptedImage(it)
+            val imageWith = binding.ivContent.width
+            val size = Size(imageWith, (imageWith / it.aspectRatio).toInt())
+            binding.ivContent.loadEncryptedImage(it, size)
         }
     }
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/futo/circles/ui/view/GroupPostHeaderView.kt b/app/src/main/java/com/futo/circles/ui/view/GroupPostHeaderView.kt
index df2ddfc4b2bd14ae8b5dd81155e4517230fc59b4..99c87416b609ac3d39f0176ac75f0d61beba2c01 100644
--- a/app/src/main/java/com/futo/circles/ui/view/GroupPostHeaderView.kt
+++ b/app/src/main/java/com/futo/circles/ui/view/GroupPostHeaderView.kt
@@ -2,6 +2,7 @@ package com.futo.circles.ui.view
 
 import android.content.Context
 import android.util.AttributeSet
+import android.util.Size
 import android.view.LayoutInflater
 import androidx.constraintlayout.widget.ConstraintLayout
 import com.futo.circles.databinding.GroupPostHeaderViewBinding
@@ -17,9 +18,14 @@ class GroupPostHeaderView(
         GroupPostHeaderViewBinding.inflate(LayoutInflater.from(context), this)
 
     fun setData(sender: SenderInfo) {
-        binding.ivSenderImage.loadImage(sender.avatarUrl, binding.ivSenderImage.height)
-        binding.tvUserName.text = sender.disambiguatedDisplayName
-        binding.tvUserId.text = sender.userId
+        with(binding) {
+            ivSenderImage.loadImage(
+                sender.avatarUrl,
+                Size(ivSenderImage.width, ivSenderImage.height)
+            )
+            tvUserName.text = sender.disambiguatedDisplayName
+            tvUserId.text = sender.userId
+        }
     }
 
 }
\ No newline at end of file