diff --git a/app/src/main/java/de/kuschku/quasseldroid/service/QuasselNotificationBackend.kt b/app/src/main/java/de/kuschku/quasseldroid/service/QuasselNotificationBackend.kt
index e08f4c2e6fb54cf3e0cc2a9ffbc743b78094dae1..c50b66fc74d98d2a413b8e80cea165f61b21478e 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/service/QuasselNotificationBackend.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/service/QuasselNotificationBackend.kt
@@ -20,6 +20,7 @@
 package de.kuschku.quasseldroid.service
 
 import android.content.Context
+import android.graphics.drawable.Drawable
 import android.support.annotation.ColorInt
 import android.text.SpannableStringBuilder
 import de.kuschku.libquassel.protocol.*
@@ -32,6 +33,7 @@ import de.kuschku.libquassel.util.IrcUserUtils
 import de.kuschku.libquassel.util.flag.hasFlag
 import de.kuschku.libquassel.util.irc.HostmaskHelper
 import de.kuschku.quasseldroid.GlideApp
+import de.kuschku.quasseldroid.GlideRequest
 import de.kuschku.quasseldroid.R
 import de.kuschku.quasseldroid.persistence.QuasselDatabase
 import de.kuschku.quasseldroid.settings.AppearanceSettings
@@ -41,6 +43,7 @@ import de.kuschku.quasseldroid.settings.Settings
 import de.kuschku.quasseldroid.util.NotificationMessage
 import de.kuschku.quasseldroid.util.avatars.AvatarHelper
 import de.kuschku.quasseldroid.util.helper.getColorCompat
+import de.kuschku.quasseldroid.util.helper.letIf
 import de.kuschku.quasseldroid.util.helper.loadWithFallbacks
 import de.kuschku.quasseldroid.util.helper.styledAttributes
 import de.kuschku.quasseldroid.util.irc.format.ContentFormatter
@@ -257,14 +260,20 @@ class QuasselNotificationBackend @Inject constructor(
         val avatarList = AvatarHelper.avatar(messageSettings, it)
         val avatarResult = try {
           GlideApp.with(context).loadWithFallbacks(avatarList)
-            ?.optionalCircleCrop()
-            ?.placeholder(TextDrawable.builder().buildRound(initial, senderColor))
+            ?.letIf(!messageSettings.squareAvatars, GlideRequest<Drawable>::optionalCircleCrop)
+            ?.placeholder(TextDrawable.builder()?.let {
+              if (messageSettings.squareAvatars) it.buildRect(initial, senderColor)
+              else it.buildRound(initial, senderColor)
+            })
             ?.submit(size, size)
             ?.get()
         } catch (_: Throwable) {
           null
         }
-        val avatar = avatarResult ?: TextDrawable.builder().buildRound(initial, senderColor)
+        val avatar = avatarResult ?: TextDrawable.builder().let {
+          if (messageSettings.squareAvatars) it.buildRect(initial, senderColor)
+          else it.buildRound(initial, senderColor)
+        }
 
         NotificationMessage(
           messageId = it.messageId,
diff --git a/app/src/main/java/de/kuschku/quasseldroid/settings/MessageSettings.kt b/app/src/main/java/de/kuschku/quasseldroid/settings/MessageSettings.kt
index 459dc2ea0222555fff894b1cd788c3712c20f754..ff9dada98931912fcaebb8d8ae294e31961eedb9 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/settings/MessageSettings.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/settings/MessageSettings.kt
@@ -32,6 +32,7 @@ data class MessageSettings(
   val timeAtEnd: Boolean = false,
   val showRealNames: Boolean = false,
   val showAvatars: Boolean = true,
+  val squareAvatars: Boolean = false,
   val showIRCCloudAvatars: Boolean = false,
   val showGravatarAvatars: Boolean = false,
   val showMatrixAvatars: Boolean = false,
diff --git a/app/src/main/java/de/kuschku/quasseldroid/settings/Settings.kt b/app/src/main/java/de/kuschku/quasseldroid/settings/Settings.kt
index fc6e0773edddfa14271fab0aec3aa55f7e0542ff..76528994920ee379642237879181b4613f0dfa8e 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/settings/Settings.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/settings/Settings.kt
@@ -109,6 +109,10 @@ object Settings {
         context.getString(R.string.preference_show_avatars_key),
         MessageSettings.DEFAULT.showAvatars
       ),
+      squareAvatars = getBoolean(
+        context.getString(R.string.preference_square_avatars_key),
+        MessageSettings.DEFAULT.squareAvatars
+      ),
       showIRCCloudAvatars = getBoolean(
         context.getString(R.string.preference_show_irccloud_avatars_key),
         MessageSettings.DEFAULT.showIRCCloudAvatars
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/AutoCompleteAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/AutoCompleteAdapter.kt
index 943ff633a5dfe2c7b577ef1d5a56432a77831e1f..cf5466771fb20dd9823a8bb99fa262208bbdd904 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/AutoCompleteAdapter.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/AutoCompleteAdapter.kt
@@ -87,7 +87,7 @@ class AutoCompleteAdapter @Inject constructor(
   }
 
   override fun onBindViewHolder(holder: AutoCompleteViewHolder, position: Int) =
-    holder.bind(getItem(position))
+    holder.bind(getItem(position), messageSettings)
 
   override fun getItemViewType(position: Int) = getItem(position).let {
     when {
@@ -99,13 +99,15 @@ class AutoCompleteAdapter @Inject constructor(
   }
 
   sealed class AutoCompleteViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
-    fun bind(data: AutoCompleteItem) = when {
-      data is AutoCompleteItem.UserItem && this is NickViewHolder       -> this.bindImpl(data)
-      data is AutoCompleteItem.ChannelItem && this is ChannelViewHolder -> this.bindImpl(data)
-      data is AutoCompleteItem.AliasItem && this is AliasViewHolder     -> this.bindImpl(data)
-      else                                                              -> throw IllegalArgumentException(
-        "Invoked with wrong item type"
-      )
+    fun bind(data: AutoCompleteItem, messageSettings: MessageSettings) = when {
+      data is AutoCompleteItem.UserItem && this is NickViewHolder       ->
+        this.bindImpl(data, messageSettings)
+      data is AutoCompleteItem.ChannelItem && this is ChannelViewHolder ->
+        this.bindImpl(data, messageSettings)
+      data is AutoCompleteItem.AliasItem && this is AliasViewHolder     ->
+        this.bindImpl(data, messageSettings)
+      else                                                              ->
+        throw IllegalArgumentException("Invoked with wrong item type")
     }
 
     class NickViewHolder(
@@ -132,13 +134,15 @@ class AutoCompleteAdapter @Inject constructor(
         }
       }
 
-      fun bindImpl(data: AutoCompleteItem.UserItem) {
+      fun bindImpl(data: AutoCompleteItem.UserItem, messageSettings: MessageSettings) {
         value = data
 
         nick.text = SpanFormatter.format("%s%s", data.modes, data.displayNick ?: data.nick)
         realname.text = data.realname
 
-        avatar.loadAvatars(data.avatarUrls, data.fallbackDrawable)
+        avatar.loadAvatars(data.avatarUrls,
+                           data.fallbackDrawable,
+                           crop = !messageSettings.squareAvatars)
       }
     }
 
@@ -179,7 +183,7 @@ class AutoCompleteAdapter @Inject constructor(
         }
       }
 
-      fun bindImpl(data: AutoCompleteItem.ChannelItem) {
+      fun bindImpl(data: AutoCompleteItem.ChannelItem, messageSettings: MessageSettings) {
         value = data
 
         name.text = data.info.bufferName
@@ -217,7 +221,7 @@ class AutoCompleteAdapter @Inject constructor(
         }
       }
 
-      fun bindImpl(data: AutoCompleteItem.AliasItem) {
+      fun bindImpl(data: AutoCompleteItem.AliasItem, messageSettings: MessageSettings) {
         value = data
 
         alias.text = data.alias
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/AutoCompleteHelper.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/AutoCompleteHelper.kt
index c789de64c2a4d98ad160d2deb416d04e9c7371cc..fb2597064ba66e7aac4c95309bf22910d63e7150 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/AutoCompleteHelper.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/AutoCompleteHelper.kt
@@ -38,6 +38,7 @@ import de.kuschku.libquassel.util.helpers.value
 import de.kuschku.quasseldroid.R
 import de.kuschku.quasseldroid.settings.AutoCompleteSettings
 import de.kuschku.quasseldroid.settings.MessageSettings
+import de.kuschku.quasseldroid.util.avatars.AvatarHelper
 import de.kuschku.quasseldroid.util.helper.styledAttributes
 import de.kuschku.quasseldroid.util.helper.toLiveData
 import de.kuschku.quasseldroid.util.irc.format.IrcFormatDeserializer
@@ -119,7 +120,10 @@ class AutoCompleteHelper(
 
           it.copy(
             displayNick = formatNick(it.nick),
-            fallbackDrawable = TextDrawable.builder().buildRound(initial, senderColor),
+            fallbackDrawable = TextDrawable.builder().let {
+              if (messageSettings.squareAvatars) it.buildRect(initial, senderColor)
+              else it.buildRound(initial, senderColor)
+            },
             modes = when (messageSettings.showPrefix) {
               MessageSettings.ShowPrefixMode.ALL ->
                 it.modes
@@ -128,7 +132,8 @@ class AutoCompleteHelper(
             },
             realname = ircFormatDeserializer.formatString(
               it.realname.toString(), messageSettings.colorizeMirc
-            )
+            ),
+            avatarUrls = AvatarHelper.avatar(messageSettings, it)
           )
         } else {
           it
@@ -221,6 +226,7 @@ class AutoCompleteHelper(
 
         AutoCompleteItem.UserItem(
           user.nick(),
+          user.hostMask(),
           network.modesToPrefixes(userModes),
           lowestMode,
           user.realName(),
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageAdapter.kt
index c53fe7d02ad93bd39533d54a2585b53d04a4fb37..7e5716d4fd46d10d549f78092fb12d7ced180650 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageAdapter.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageAdapter.kt
@@ -35,6 +35,7 @@ import de.kuschku.libquassel.protocol.Message_Type
 import de.kuschku.libquassel.util.flag.hasFlag
 import de.kuschku.quasseldroid.R
 import de.kuschku.quasseldroid.persistence.QuasselDatabase
+import de.kuschku.quasseldroid.settings.MessageSettings
 import de.kuschku.quasseldroid.util.helper.getOrPut
 import de.kuschku.quasseldroid.util.helper.loadAvatars
 import de.kuschku.quasseldroid.util.ui.BetterLinkMovementMethod
@@ -239,7 +240,8 @@ class MessageAdapter @Inject constructor(
     }
 
     fun bind(message: FormattedMessage, original: QuasselDatabase.MessageData,
-             selectable: Boolean = true, clickable: Boolean = true) {
+             selectable: Boolean = true, clickable: Boolean = true,
+             messageSettings: MessageSettings) {
       this.message = message
       this.original = original
       this.selectable = selectable
@@ -254,7 +256,9 @@ class MessageAdapter @Inject constructor(
 
       this.itemView.isSelected = message.isSelected
 
-      avatar?.loadAvatars(message.avatarUrls, message.fallbackDrawable)
+      avatar?.loadAvatars(message.avatarUrls,
+                          message.fallbackDrawable,
+                          crop = !messageSettings.squareAvatars)
     }
   }
 }
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/QuasselMessageRenderer.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/QuasselMessageRenderer.kt
index 6abef2550ed16ea09f72d4c354287285a2f35bc7..4b80ab9b43376aa2516591749bdb810122f94b3b 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/QuasselMessageRenderer.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/QuasselMessageRenderer.kt
@@ -184,7 +184,7 @@ class QuasselMessageRenderer @Inject constructor(
   override fun bind(holder: MessageAdapter.QuasselMessageViewHolder, message: FormattedMessage,
                     original: QuasselDatabase.MessageData) =
     original.type.hasFlag(DayChange).let { isDayChange ->
-      holder.bind(message, original, !isDayChange, !isDayChange)
+      holder.bind(message, original, !isDayChange, !isDayChange, messageSettings)
     }
 
   override fun render(context: Context, message: DisplayMessage): FormattedMessage {
@@ -234,7 +234,10 @@ class QuasselMessageRenderer @Inject constructor(
           },
           realName = realName,
           avatarUrls = AvatarHelper.avatar(messageSettings, message.content, avatarSize),
-          fallbackDrawable = TextDrawable.builder().buildRound(initial, senderColor),
+          fallbackDrawable = TextDrawable.builder().let {
+            if (messageSettings.squareAvatars) it.buildRect(initial, senderColor)
+            else it.buildRound(initial, senderColor)
+          },
           isMarkerLine = message.isMarkerLine,
           isExpanded = message.isExpanded,
           isSelected = message.isSelected
@@ -337,9 +340,9 @@ class QuasselMessageRenderer @Inject constructor(
             context.getString(R.string.message_format_part_2),
             contentFormatter.formatPrefix(message.content.senderPrefixes),
             contentFormatter.formatNick(message.content.sender,
-                       self,
-                       highlight,
-                       messageSettings.showHostmaskActions),
+                                        self,
+                                        highlight,
+                                        messageSettings.showHostmaskActions),
             contentFormatter.formatContent(message.content.content, highlight)
           )
         },
@@ -364,9 +367,9 @@ class QuasselMessageRenderer @Inject constructor(
             context.getString(R.string.message_format_quit_2),
             contentFormatter.formatPrefix(message.content.senderPrefixes),
             contentFormatter.formatNick(message.content.sender,
-                       self,
-                       highlight,
-                       messageSettings.showHostmaskActions),
+                                        self,
+                                        highlight,
+                                        messageSettings.showHostmaskActions),
             contentFormatter.formatContent(message.content.content, highlight)
           )
         },
@@ -385,9 +388,9 @@ class QuasselMessageRenderer @Inject constructor(
               contentFormatter.formatNick(user, false, highlight, false),
               contentFormatter.formatPrefix(message.content.senderPrefixes),
               contentFormatter.formatNick(message.content.sender,
-                         self,
-                         highlight,
-                         messageSettings.showHostmaskActions)
+                                          self,
+                                          highlight,
+                                          messageSettings.showHostmaskActions)
             )
           } else {
             SpanFormatter.format(
@@ -395,9 +398,9 @@ class QuasselMessageRenderer @Inject constructor(
               contentFormatter.formatNick(user, false, highlight, false),
               contentFormatter.formatPrefix(message.content.senderPrefixes),
               contentFormatter.formatNick(message.content.sender,
-                         self,
-                         highlight,
-                         messageSettings.showHostmaskActions),
+                                          self,
+                                          highlight,
+                                          messageSettings.showHostmaskActions),
               contentFormatter.formatContent(reason, highlight)
             )
           },
@@ -417,9 +420,9 @@ class QuasselMessageRenderer @Inject constructor(
               contentFormatter.formatNick(user, false, highlight, false),
               contentFormatter.formatPrefix(message.content.senderPrefixes),
               contentFormatter.formatNick(message.content.sender,
-                         self,
-                         highlight,
-                         messageSettings.showHostmaskActions)
+                                          self,
+                                          highlight,
+                                          messageSettings.showHostmaskActions)
             )
           } else {
             SpanFormatter.format(
@@ -427,9 +430,9 @@ class QuasselMessageRenderer @Inject constructor(
               contentFormatter.formatNick(user, false, highlight, false),
               contentFormatter.formatPrefix(message.content.senderPrefixes),
               contentFormatter.formatNick(message.content.sender,
-                         self,
-                         highlight,
-                         messageSettings.showHostmaskActions),
+                                          self,
+                                          highlight,
+                                          messageSettings.showHostmaskActions),
               contentFormatter.formatContent(reason, highlight)
             )
           },
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/nicks/NickListAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/nicks/NickListAdapter.kt
index 5d76ecf4180ec17cbb11d69947a7d269abfeb4be..024db116d0b1a52f4e4012c8ed9d53e5ecb9114b 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/nicks/NickListAdapter.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/nicks/NickListAdapter.kt
@@ -66,7 +66,7 @@ class NickListAdapter(
   operator fun get(position: Int): IrcUserItem? = super.getItem(position)
 
   override fun onBindViewHolder(holder: NickViewHolder, position: Int) =
-    holder.bind(getItem(position))
+    holder.bind(getItem(position), messageSettings)
 
   override fun getItemViewType(position: Int) = if (getItem(position).away) {
     VIEWTYPE_AWAY
@@ -98,13 +98,15 @@ class NickListAdapter(
       }
     }
 
-    fun bind(data: IrcUserItem) {
+    fun bind(data: IrcUserItem, messageSettings: MessageSettings) {
       user = data.nick
 
       nick.text = SpanFormatter.format("%s%s", data.modes, data.displayNick ?: data.nick)
       realname.text = data.realname
 
-      avatar.loadAvatars(data.avatarUrls, data.fallbackDrawable)
+      avatar.loadAvatars(data.avatarUrls,
+                         data.fallbackDrawable,
+                         crop = !messageSettings.squareAvatars)
     }
   }
 
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/nicks/NickListFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/nicks/NickListFragment.kt
index 6f97dc42c46cb72119853c6e3f78c7a43da1a572..6f7e0ba2af69cb13bef7c94a3ad025ad05ac3252 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/nicks/NickListFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/nicks/NickListFragment.kt
@@ -142,7 +142,10 @@ class NickListFragment : ServiceBoundFragment() {
           }
           it.copy(
             displayNick = formatNick(it.nick),
-            fallbackDrawable = TextDrawable.builder().buildRound(initial, senderColor),
+            fallbackDrawable = TextDrawable.builder().let {
+              if (messageSettings.squareAvatars) it.buildRect(initial, senderColor)
+              else it.buildRound(initial, senderColor)
+            },
             modes = when (messageSettings.showPrefix) {
               MessageSettings.ShowPrefixMode.ALL ->
                 it.modes
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/avatars/AvatarHelper.kt b/app/src/main/java/de/kuschku/quasseldroid/util/avatars/AvatarHelper.kt
index 78d0b6c87c736b9100633c17467323b5e6d279c8..e218c141a9fb3ff6e83d4b201b4cdadddf219494 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/avatars/AvatarHelper.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/avatars/AvatarHelper.kt
@@ -29,74 +29,45 @@ import de.kuschku.quasseldroid.util.Patterns
 import de.kuschku.quasseldroid.util.backport.codec.Hex
 import de.kuschku.quasseldroid.util.helper.letIf
 import de.kuschku.quasseldroid.util.helper.notBlank
+import de.kuschku.quasseldroid.viewmodel.data.AutoCompleteItem
 import de.kuschku.quasseldroid.viewmodel.data.Avatar
 import de.kuschku.quasseldroid.viewmodel.data.IrcUserItem
 import org.apache.commons.codec.digest.DigestUtils
 
 object AvatarHelper {
+  private fun avatar(settings: MessageSettings, ident: String, realName: String,
+                     avatarUrl: String?, size: Int?) =
+    listOfNotNull(
+      avatarUrl.notBlank()?.let { listOf(Avatar.NativeAvatar(it)) },
+      settings.showIRCCloudAvatars.letIf {
+        ircCloudFallback(ident, size)
+      },
+      settings.showGravatarAvatars.letIf {
+        gravatarFallback(realName, size)
+      },
+      settings.showMatrixAvatars.letIf {
+        matrixFallback(realName, size)
+      }
+    ).flatten()
+
   fun avatar(settings: MessageSettings, message: QuasselDatabase.NotificationData,
-             size: Int? = null) = listOfNotNull(
-    message.avatarUrl.notBlank()?.let { listOf(Avatar.NativeAvatar(it)) },
-    settings.showIRCCloudAvatars.letIf {
-      ircCloudFallback(HostmaskHelper.user(message.sender), size)
-    },
-    settings.showGravatarAvatars.letIf {
-      gravatarFallback(message.realName, size)
-    },
-    settings.showMatrixAvatars.letIf {
-      matrixFallback(message.realName, size)
-    }
-  ).flatten()
+             size: Int? = null) =
+    avatar(settings, HostmaskHelper.user(message.sender), message.realName, message.avatarUrl, size)
 
-  fun avatar(settings: MessageSettings, message: QuasselDatabase.MessageData,
-             size: Int? = null) = listOfNotNull(
-    message.avatarUrl.notBlank()?.let { listOf(Avatar.NativeAvatar(it)) },
-    settings.showIRCCloudAvatars.letIf {
-      ircCloudFallback(HostmaskHelper.user(message.sender), size)
-    },
-    settings.showGravatarAvatars.letIf {
-      gravatarFallback(message.realName, size)
-    },
-    settings.showMatrixAvatars.letIf {
-      matrixFallback(message.realName, size)
-    }
-  ).flatten()
+  fun avatar(settings: MessageSettings, message: QuasselDatabase.MessageData, size: Int? = null) =
+    avatar(settings, HostmaskHelper.user(message.sender), message.realName, message.avatarUrl, size)
 
-  fun avatar(settings: MessageSettings, user: IrcUserItem, size: Int? = null) = listOfNotNull(
-    settings.showIRCCloudAvatars.letIf {
-      ircCloudFallback(HostmaskHelper.user(user.hostmask), size)
-    },
-    settings.showGravatarAvatars.letIf {
-      gravatarFallback(user.realname.toString(), size)
-    },
-    settings.showMatrixAvatars.letIf {
-      matrixFallback(user.realname.toString(), size)
-    }
-  ).flatten()
+  fun avatar(settings: MessageSettings, user: IrcUserItem, size: Int? = null) =
+    avatar(settings, HostmaskHelper.user(user.hostmask), user.realname.toString(), null, size)
 
-  fun avatar(settings: MessageSettings, user: IrcUserInfo, size: Int? = null) = listOfNotNull(
-    settings.showIRCCloudAvatars.letIf {
-      ircCloudFallback(user.user ?: "", size)
-    },
-    settings.showGravatarAvatars.letIf {
-      gravatarFallback(user.realName ?: "", size)
-    },
-    settings.showMatrixAvatars.letIf {
-      matrixFallback(user.realName ?: "", size)
-    }
-  ).flatten()
+  fun avatar(settings: MessageSettings, user: IrcUserInfo, size: Int? = null) =
+    avatar(settings, user.user ?: "", user.realName ?: "", null, size)
 
-  fun avatar(settings: MessageSettings, user: IrcUser, size: Int? = null) = listOfNotNull(
-    settings.showIRCCloudAvatars.letIf {
-      ircCloudFallback(user.user(), size)
-    },
-    settings.showGravatarAvatars.letIf {
-      gravatarFallback(user.realName(), size)
-    },
-    settings.showMatrixAvatars.letIf {
-      matrixFallback(user.realName(), size)
-    }
-  ).flatten()
+  fun avatar(settings: MessageSettings, user: IrcUser, size: Int? = null) =
+    avatar(settings, user.user(), user.realName(), null, size)
+
+  fun avatar(settings: MessageSettings, user: AutoCompleteItem.UserItem, size: Int? = null) =
+    avatar(settings, HostmaskHelper.user(user.hostMask), user.realname.toString(), null, size)
 
   private fun ircCloudFallback(ident: String, size: Int?): List<Avatar> {
     val userId = Patterns.IRCCLOUD_IDENT.matchEntire(ident)?.groupValues?.lastOrNull()
diff --git a/app/src/main/res/values-de/strings_preferences.xml b/app/src/main/res/values-de/strings_preferences.xml
index 5686fb940d778b9830c321dea25a7af1d4c22ceb..3b48dfe1b705c9e529f26d6b2c43c5b49ad5046b 100644
--- a/app/src/main/res/values-de/strings_preferences.xml
+++ b/app/src/main/res/values-de/strings_preferences.xml
@@ -93,6 +93,8 @@
 
   <string name="preference_show_avatars_title">Avatare anzeigen</string>
 
+  <string name="preference_square_avatars_title">Quadratische Avatare</string>
+
   <string name="preference_show_irccloud_avatars_title">IRCCloud Avatare anzeigen</string>
   <string name="preference_show_irccloud_avatars_summary">Zeigt für Nutzer ohne Avatare den IRCCloud-Avatar an, falls verfügbar</string>
 
diff --git a/app/src/main/res/values/strings_preferences.xml b/app/src/main/res/values/strings_preferences.xml
index c2de68aca73f912dc3f770776e879f82b5726a5c..a4f188f130eea188028bc17dffc50851b92712f4 100644
--- a/app/src/main/res/values/strings_preferences.xml
+++ b/app/src/main/res/values/strings_preferences.xml
@@ -204,6 +204,9 @@
   <string name="preference_show_avatars_key" translatable="false">show_avatars</string>
   <string name="preference_show_avatars_title">Show Avatars</string>
 
+  <string name="preference_square_avatars_key" translatable="false">square_avatars</string>
+  <string name="preference_square_avatars_title">Square Avatars</string>
+
   <string name="preference_show_irccloud_avatars_key" translatable="false">show_irccloud_avatars</string>
   <string name="preference_show_irccloud_avatars_title">Show IRCCloud Avatars</string>
   <string name="preference_show_irccloud_avatars_summary">Shows for users without avatar their IRCCloud fallback, if available</string>
diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml
index f350beadd5423521d1555d68f5c63006008d067d..02cd642d4891647485845ec96e7918ee6e504943 100644
--- a/app/src/main/res/xml/preferences.xml
+++ b/app/src/main/res/xml/preferences.xml
@@ -161,6 +161,11 @@
       android:key="@string/preference_show_avatars_key"
       android:title="@string/preference_show_avatars_title" />
 
+    <SwitchPreference
+      android:defaultValue="false"
+      android:key="@string/preference_square_avatars_key"
+      android:title="@string/preference_square_avatars_title" />
+
     <SwitchPreference
       android:defaultValue="false"
       android:dependency="@string/preference_show_avatars_key"
diff --git a/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/EditorViewModel.kt b/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/EditorViewModel.kt
index 92d8566b5638e261dfb773507dc9dc2fa0932e4f..a6941fedfb02dc97c87d1a99ef7fbe0321b0c10a 100644
--- a/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/EditorViewModel.kt
+++ b/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/EditorViewModel.kt
@@ -138,6 +138,7 @@ class EditorViewModel : ViewModel() {
 
                     AutoCompleteItem.UserItem(
                       user.nick(),
+                      user.hostMask(),
                       network.modesToPrefixes(userModes),
                       lowestMode,
                       user.realName(),
diff --git a/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/AutoCompleteItem.kt b/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/AutoCompleteItem.kt
index d2943ed4bc667822853409805160aa276c68e380..c9e4d2f97d4b073d5c87224f04add4e8093cb175 100644
--- a/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/AutoCompleteItem.kt
+++ b/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/AutoCompleteItem.kt
@@ -32,6 +32,7 @@ sealed class AutoCompleteItem(open val name: String, val suffix: String, private
 
   data class UserItem(
     val nick: String,
+    val hostMask: String,
     val modes: String,
     val lowestMode: Int,
     val realname: CharSequence,