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 dd004e0e3d7b74c4d50346e7dc6a407e2eb00f54..1c764cefab28c777a54bd73d275a3062047ed8ef 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/service/QuasselNotificationBackend.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/service/QuasselNotificationBackend.kt
@@ -64,6 +64,9 @@ class QuasselNotificationBackend @Inject constructor(
   private var selfColor: Int
   private var senderColors: IntArray
 
+  @ColorInt
+  private var colorBackground: Int
+
   init {
     notificationSettings = Settings.notification(context)
     appearanceSettings = Settings.appearance(context)
@@ -81,6 +84,9 @@ class QuasselNotificationBackend @Inject constructor(
       }
     }
     selfColor = context.getColorCompat(R.color.material_dark_background)
+    colorBackground = context.theme.styledAttributes(R.attr.colorBackground) {
+      getColor(0, 0)
+    }
   }
 
   override fun init(session: Session) {
@@ -157,6 +163,9 @@ class QuasselNotificationBackend @Inject constructor(
       }
     }
     selfColor = context.getColorCompat(R.color.material_dark_background)
+    colorBackground = context.theme.styledAttributes(R.attr.colorBackground) {
+      getColor(0, 0)
+    }
   }
 
   @Synchronized
@@ -258,12 +267,13 @@ class QuasselNotificationBackend @Inject constructor(
         }
 
         val size = context.resources.getDimensionPixelSize(R.dimen.notification_avatar_width)
+        val radius = context.resources.getDimensionPixelSize(R.dimen.avatar_radius)
         val avatarList = AvatarHelper.avatar(messageSettings, it)
         val avatarResult = try {
           GlideApp.with(context).loadWithFallbacks(avatarList)
             ?.letIf(!messageSettings.squareAvatars, GlideRequest<Drawable>::optionalCircleCrop)
-            ?.placeholder(TextDrawable.builder()?.let {
-              if (messageSettings.squareAvatars) it.buildRect(initial, senderColor)
+            ?.placeholder(TextDrawable.builder().beginConfig().textColor(colorBackground).endConfig().let {
+              if (messageSettings.squareAvatars) it.buildRoundRect(initial, senderColor, radius)
               else it.buildRound(initial, senderColor)
             })
             ?.submit(size, size)
@@ -271,8 +281,11 @@ class QuasselNotificationBackend @Inject constructor(
         } catch (_: Throwable) {
           null
         }
-        val avatar = avatarResult ?: TextDrawable.builder().let {
-          if (messageSettings.squareAvatars) it.buildRect(initial, senderColor)
+        val avatar = avatarResult
+                     ?: TextDrawable.builder().beginConfig().textColor(colorBackground).endConfig().let {
+                       if (messageSettings.squareAvatars) it.buildRoundRect(initial,
+                                                                            senderColor,
+                                                                            radius)
           else it.buildRound(initial, senderColor)
         }
 
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/buffers/BufferListAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/buffers/BufferListAdapter.kt
index 4a329ce630f10bdebe046b62c5c9ed0b84b5dc21..ebcf54b35215f9c290ad6504e083280d0793d49d 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/buffers/BufferListAdapter.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/buffers/BufferListAdapter.kt
@@ -331,9 +331,6 @@ class BufferListAdapter(
 
       var bufferId: BufferId? = null
 
-      private val online: Drawable?
-      private val offline: Drawable?
-
       private var none: Int = 0
       private var activity: Int = 0
       private var message: Int = 0
@@ -357,21 +354,14 @@ class BufferListAdapter(
           }
         }
 
-        online = itemView.context.getVectorDrawableCompat(R.drawable.ic_status_channel)?.mutate()
-        offline = itemView.context.getVectorDrawableCompat(R.drawable.ic_status_channel_offline)?.mutate()
-
         itemView.context.theme.styledAttributes(
-          R.attr.colorAccent, R.attr.colorAway,
           R.attr.colorTextPrimary, R.attr.colorTintActivity, R.attr.colorTintMessage,
           R.attr.colorTintHighlight
         ) {
-          online?.tint(getColor(0, 0))
-          offline?.tint(getColor(1, 0))
-
-          none = getColor(2, 0)
-          activity = getColor(3, 0)
-          message = getColor(4, 0)
-          highlight = getColor(5, 0)
+          none = getColor(0, 0)
+          activity = getColor(1, 0)
+          message = getColor(2, 0)
+          highlight = getColor(3, 0)
         }
       }
 
@@ -394,12 +384,7 @@ class BufferListAdapter(
 
         description.visibleIf(props.description.isNotBlank())
 
-        status.setImageDrawable(
-          when (props.bufferStatus) {
-            BufferStatus.ONLINE -> online
-            else                -> offline
-          }
-        )
+        status.setImageDrawable(props.fallbackDrawable)
       }
     }
 
@@ -419,8 +404,6 @@ class BufferListAdapter(
 
       var bufferId: BufferId? = null
 
-      private val offline: Drawable?
-
       private var none: Int = 0
       private var activity: Int = 0
       private var message: Int = 0
@@ -444,19 +427,14 @@ class BufferListAdapter(
           }
         }
 
-        offline = itemView.context.getVectorDrawableCompat(R.drawable.ic_status_offline)?.mutate()
-
         itemView.context.theme.styledAttributes(
-          R.attr.colorAway,
           R.attr.colorTextPrimary, R.attr.colorTintActivity, R.attr.colorTintMessage,
           R.attr.colorTintHighlight
         ) {
-          offline?.tint(getColor(0, 0))
-
-          none = getColor(1, 0)
-          activity = getColor(2, 0)
-          message = getColor(3, 0)
-          highlight = getColor(4, 0)
+          none = getColor(0, 0)
+          activity = getColor(1, 0)
+          message = getColor(2, 0)
+          highlight = getColor(3, 0)
         }
       }
 
@@ -480,7 +458,7 @@ class BufferListAdapter(
         description.visibleIf(props.description.isNotBlank())
 
         status.loadAvatars(props.avatarUrls,
-                           props.fallbackDrawable ?: offline,
+                           props.fallbackDrawable,
                            crop = !messageSettings.squareAvatars)
       }
     }
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/buffers/BufferViewConfigFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/buffers/BufferViewConfigFragment.kt
index 75fc022f1a971d68c60afb50fec839261c4a7d4f..90eacded499120607f539dfa07a7a542f332ae9f 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/buffers/BufferViewConfigFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/buffers/BufferViewConfigFragment.kt
@@ -56,6 +56,7 @@ import de.kuschku.quasseldroid.viewmodel.EditorViewModel.Companion.IGNORED_CHARS
 import de.kuschku.quasseldroid.viewmodel.data.BufferHiddenState
 import de.kuschku.quasseldroid.viewmodel.data.BufferListItem
 import de.kuschku.quasseldroid.viewmodel.data.BufferState
+import de.kuschku.quasseldroid.viewmodel.data.BufferStatus
 import javax.inject.Inject
 
 class BufferViewConfigFragment : ServiceBoundFragment() {
@@ -272,6 +273,20 @@ class BufferViewConfigFragment : ServiceBoundFragment() {
       getColor(0, 0)
     }
 
+    val colorAccent = requireContext().theme.styledAttributes(R.attr.colorAccent) {
+      getColor(0, 0)
+    }
+
+    val colorAway = requireContext().theme.styledAttributes(R.attr.colorAway) {
+      getColor(0, 0)
+    }
+
+    val colorBackground = requireContext().theme.styledAttributes(R.attr.colorBackground) {
+      getColor(0, 0)
+    }
+
+    val radius = requireContext().resources.getDimensionPixelSize(R.dimen.avatar_radius)
+
     combineLatest(viewModel.bufferList, viewModel.expandedNetworks, viewModel.selectedBuffer)
       .toLiveData().zip(database.filtered().listen(accountId))
       .observe(this, Observer { it ->
@@ -304,23 +319,39 @@ class BufferViewConfigFragment : ServiceBoundFragment() {
                       else                                  -> Buffer_Activity.NoActivity
                     }
                   ),
-                  fallbackDrawable = props.ircUser?.let {
-                    val nickName = it.nick()
-                    val senderColorIndex = SenderColorUtil.senderColor(nickName)
-                    val rawInitial = nickName.trimStart(*IGNORED_CHARS).firstOrNull()
-                                     ?: nickName.firstOrNull()
-                    val initial = rawInitial?.toUpperCase().toString()
-                    val senderColor = when (messageSettings.colorizeNicknames) {
-                      MessageSettings.ColorizeNicknamesMode.ALL          -> senderColors[senderColorIndex]
-                      MessageSettings.ColorizeNicknamesMode.ALL_BUT_MINE ->
-                        if (props.ircUser?.network()?.isMyNick(nickName) == true) selfColor
-                        else senderColors[senderColorIndex]
-                      MessageSettings.ColorizeNicknamesMode.NONE         -> selfColor
+                  fallbackDrawable = if (props.info.type.hasFlag(Buffer_Type.QueryBuffer)) {
+                    props.ircUser?.let {
+                      val nickName = it.nick()
+                      val senderColorIndex = SenderColorUtil.senderColor(nickName)
+                      val rawInitial = nickName.trimStart(*IGNORED_CHARS).firstOrNull()
+                                       ?: nickName.firstOrNull()
+                      val initial = rawInitial?.toUpperCase().toString()
+                      val senderColor = when (messageSettings.colorizeNicknames) {
+                        MessageSettings.ColorizeNicknamesMode.ALL          -> senderColors[senderColorIndex]
+                        MessageSettings.ColorizeNicknamesMode.ALL_BUT_MINE ->
+                          if (props.ircUser?.network()?.isMyNick(nickName) == true) selfColor
+                          else senderColors[senderColorIndex]
+                        MessageSettings.ColorizeNicknamesMode.NONE         -> selfColor
+                      }
+
+                      TextDrawable.builder().beginConfig().textColor(colorBackground).endConfig().let {
+                        if (messageSettings.squareAvatars) it.buildRoundRect(initial,
+                                                                             senderColor,
+                                                                             radius)
+                        else it.buildRound(initial, senderColor)
+                      }
+                    }
+                    ?: TextDrawable.builder().beginConfig().textColor(colorBackground).endConfig().let {
+                      if (messageSettings.squareAvatars) it.buildRoundRect("", colorAway, radius)
+                      else it.buildRound("", colorAway)
                     }
+                  } else {
+                    val color = if (props.bufferStatus == BufferStatus.ONLINE) colorAccent
+                    else colorAway
 
-                    TextDrawable.builder().let {
-                      if (messageSettings.squareAvatars) it.buildRect(initial, senderColor)
-                      else it.buildRound(initial, senderColor)
+                    TextDrawable.builder().beginConfig().textColor(colorBackground).endConfig().let {
+                      if (messageSettings.squareAvatars) it.buildRoundRect("#", color, radius)
+                      else it.buildRound("#", color)
                     }
                   },
                   avatarUrls = props.ircUser?.let {
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 cf5466771fb20dd9823a8bb99fa262208bbdd904..b13ef639837e9dc85e25f26f5c773c8e8ead9758 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
@@ -19,7 +19,6 @@
 
 package de.kuschku.quasseldroid.ui.chat.input
 
-import android.graphics.drawable.Drawable
 import android.support.v7.recyclerview.extensions.ListAdapter
 import android.support.v7.util.DiffUtil
 import android.support.v7.widget.RecyclerView
@@ -33,10 +32,10 @@ import butterknife.ButterKnife
 import de.kuschku.quasseldroid.R
 import de.kuschku.quasseldroid.settings.MessageSettings
 import de.kuschku.quasseldroid.ui.chat.nicks.NickListAdapter.Companion.VIEWTYPE_AWAY
-import de.kuschku.quasseldroid.util.helper.*
+import de.kuschku.quasseldroid.util.helper.loadAvatars
+import de.kuschku.quasseldroid.util.helper.visibleIf
 import de.kuschku.quasseldroid.util.ui.SpanFormatter
 import de.kuschku.quasseldroid.viewmodel.data.AutoCompleteItem
-import de.kuschku.quasseldroid.viewmodel.data.BufferStatus
 import javax.inject.Inject
 
 class AutoCompleteAdapter @Inject constructor(
@@ -161,9 +160,6 @@ class AutoCompleteAdapter @Inject constructor(
 
       var value: AutoCompleteItem? = null
 
-      private val online: Drawable?
-      private val offline: Drawable?
-
       init {
         ButterKnife.bind(this, itemView)
         itemView.setOnClickListener {
@@ -171,16 +167,6 @@ class AutoCompleteAdapter @Inject constructor(
           if (value != null)
             clickListener?.invoke(value.name, value.suffix)
         }
-
-        online = itemView.context.getVectorDrawableCompat(R.drawable.ic_status_channel)?.mutate()
-        offline = itemView.context.getVectorDrawableCompat(R.drawable.ic_status_channel_offline)?.mutate()
-
-        itemView.context.theme.styledAttributes(
-          R.attr.colorAccent, R.attr.colorAway
-        ) {
-          online?.tint(getColor(0, 0))
-          offline?.tint(getColor(1, 0))
-        }
       }
 
       fun bindImpl(data: AutoCompleteItem.ChannelItem, messageSettings: MessageSettings) {
@@ -191,12 +177,7 @@ class AutoCompleteAdapter @Inject constructor(
 
         description.visibleIf(data.description.isNotBlank())
 
-        status.setImageDrawable(
-          when (data.bufferStatus) {
-            BufferStatus.ONLINE -> online
-            else                -> offline
-          }
-        )
+        status.setImageDrawable(data.icon)
       }
     }
 
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 1f6419617fc930ab6a6a6e3592790a93387a1df9..e27d148bb165cc5d3aa812929e3a7e6637baa5f5 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
@@ -73,6 +73,20 @@ class AutoCompleteHelper(
     getColor(0, 0)
   }
 
+  private val colorAccent = activity.theme.styledAttributes(R.attr.colorAccent) {
+    getColor(0, 0)
+  }
+
+  private val colorAway = activity.theme.styledAttributes(R.attr.colorAway) {
+    getColor(0, 0)
+  }
+
+  private val colorBackground = activity.theme.styledAttributes(R.attr.colorBackground) {
+    getColor(0, 0)
+  }
+
+  private val radius = activity.resources.getDimensionPixelSize(R.dimen.avatar_radius)
+
   init {
     viewModel.autoCompleteData.toLiveData().observe(activity, Observer {
       val query = it?.first ?: ""
@@ -87,56 +101,68 @@ class AutoCompleteHelper(
         it is AutoCompleteItem.UserItem && autoCompleteSettings.nicks ||
         it is AutoCompleteItem.ChannelItem && autoCompleteSettings.buffers
       }.map {
-        if (it is AutoCompleteItem.UserItem) {
-          val nickName = it.nick
-          val senderColorIndex = SenderColorUtil.senderColor(nickName)
-          val rawInitial = nickName.trimStart(*IGNORED_CHARS).firstOrNull()
-                           ?: nickName.firstOrNull()
-          val initial = rawInitial?.toUpperCase().toString()
-          val senderColor = when (messageSettings.colorizeNicknames) {
-            MessageSettings.ColorizeNicknamesMode.ALL          -> senderColors[senderColorIndex]
-            MessageSettings.ColorizeNicknamesMode.ALL_BUT_MINE ->
-              if (it.self) selfColor
-              else senderColors[senderColorIndex]
-            MessageSettings.ColorizeNicknamesMode.NONE         -> selfColor
-          }
+        when (it) {
+          is AutoCompleteItem.UserItem    -> {
+            val nickName = it.nick
+            val senderColorIndex = SenderColorUtil.senderColor(nickName)
+            val rawInitial = nickName.trimStart(*IGNORED_CHARS).firstOrNull()
+                             ?: nickName.firstOrNull()
+            val initial = rawInitial?.toUpperCase().toString()
+            val senderColor = when (messageSettings.colorizeNicknames) {
+              MessageSettings.ColorizeNicknamesMode.ALL          -> senderColors[senderColorIndex]
+              MessageSettings.ColorizeNicknamesMode.ALL_BUT_MINE ->
+                if (it.self) selfColor
+                else senderColors[senderColorIndex]
+              MessageSettings.ColorizeNicknamesMode.NONE         -> selfColor
+            }
 
-          fun formatNick(nick: CharSequence): CharSequence {
-            val spannableString = SpannableString(nick)
-            spannableString.setSpan(
-              ForegroundColorSpan(senderColor),
-              0,
-              nick.length,
-              SpannableString.SPAN_INCLUSIVE_EXCLUSIVE
-            )
-            spannableString.setSpan(
-              StyleSpan(Typeface.BOLD),
-              0,
-              nick.length,
-              SpannableString.SPAN_INCLUSIVE_EXCLUSIVE
+            fun formatNick(nick: CharSequence): CharSequence {
+              val spannableString = SpannableString(nick)
+              spannableString.setSpan(
+                ForegroundColorSpan(senderColor),
+                0,
+                nick.length,
+                SpannableString.SPAN_INCLUSIVE_EXCLUSIVE
+              )
+              spannableString.setSpan(
+                StyleSpan(Typeface.BOLD),
+                0,
+                nick.length,
+                SpannableString.SPAN_INCLUSIVE_EXCLUSIVE
+              )
+              return spannableString
+            }
+
+            it.copy(
+              displayNick = formatNick(it.nick),
+              fallbackDrawable = TextDrawable.builder().beginConfig().textColor(colorBackground).endConfig().let {
+                if (messageSettings.squareAvatars) it.buildRoundRect(initial, senderColor, radius)
+                else it.buildRound(initial, senderColor)
+              },
+              modes = when (messageSettings.showPrefix) {
+                MessageSettings.ShowPrefixMode.ALL ->
+                  it.modes
+                else                               ->
+                  it.modes.substring(0, Math.min(it.modes.length, 1))
+              },
+              realname = ircFormatDeserializer.formatString(
+                it.realname.toString(), messageSettings.colorizeMirc
+              ),
+              avatarUrls = AvatarHelper.avatar(messageSettings, it)
             )
-            return spannableString
           }
+          is AutoCompleteItem.ChannelItem -> {
+            val color = if (it.bufferStatus == BufferStatus.ONLINE) colorAccent
+            else colorAway
 
-          it.copy(
-            displayNick = formatNick(it.nick),
-            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
-              else                               ->
-                it.modes.substring(0, Math.min(it.modes.length, 1))
-            },
-            realname = ircFormatDeserializer.formatString(
-              it.realname.toString(), messageSettings.colorizeMirc
-            ),
-            avatarUrls = AvatarHelper.avatar(messageSettings, it)
-          )
-        } else {
-          it
+            it.copy(
+              icon = TextDrawable.builder().beginConfig().textColor(colorBackground).endConfig().let {
+                if (messageSettings.squareAvatars) it.buildRoundRect("#", color, radius)
+                else it.buildRound("#", color)
+              }
+            )
+          }
+          else                            -> it
         }
       }
       dataListeners.forEach {
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 8a8ace583e35d5cb22cfd02d4643552de11afbc1..d3c49ab177787de56ba344efea959fab4b2b9a77 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
@@ -98,6 +98,12 @@ class QuasselMessageRenderer @Inject constructor(
     getColor(0, 0)
   }
 
+  private val colorBackground = context.theme.styledAttributes(R.attr.colorBackground) {
+    getColor(0, 0)
+  }
+
+  private val radius = context.resources.getDimensionPixelSize(R.dimen.avatar_radius)
+
   private val zoneId = ZoneId.systemDefault()
 
   override fun layout(type: Message_Type?, hasHighlight: Boolean,
@@ -255,8 +261,8 @@ class QuasselMessageRenderer @Inject constructor(
           },
           realName = realName,
           avatarUrls = AvatarHelper.avatar(messageSettings, message.content, avatarSize),
-          fallbackDrawable = TextDrawable.builder().let {
-            if (messageSettings.squareAvatars) it.buildRect(initial, senderColor)
+          fallbackDrawable = TextDrawable.builder().beginConfig().textColor(colorBackground).endConfig().let {
+            if (messageSettings.squareAvatars) it.buildRoundRect(initial, senderColor, radius)
             else it.buildRound(initial, senderColor)
           },
           hasDayChange = message.hasDayChange,
@@ -290,8 +296,8 @@ class QuasselMessageRenderer @Inject constructor(
             contentFormatter.formatContent(message.content.content, monochromeForeground)
           ),
           avatarUrls = AvatarHelper.avatar(messageSettings, message.content, avatarSize),
-          fallbackDrawable = TextDrawable.builder().let {
-            if (messageSettings.squareAvatars) it.buildRect(initial, senderColor)
+          fallbackDrawable = TextDrawable.builder().beginConfig().textColor(colorBackground).endConfig().let {
+            if (messageSettings.squareAvatars) it.buildRoundRect(initial, senderColor, radius)
             else it.buildRound(initial, senderColor)
           },
           hasDayChange = message.hasDayChange,
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 80f6d2ce160d9bf5958f58599c94606e1da391ba..ca74a5ce5566825a22e76af5be82dcf958980cfb 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
@@ -98,6 +98,12 @@ class NickListFragment : ServiceBoundFragment() {
       getColor(0, 0)
     }
 
+    val colorBackground = requireContext().theme.styledAttributes(R.attr.colorBackground) {
+      getColor(0, 0)
+    }
+
+    val radius = requireContext().resources.getDimensionPixelSize(R.dimen.avatar_radius)
+
     val avatarSize = resources.getDimensionPixelSize(R.dimen.avatar_size)
     viewModel.nickData.toLiveData().observe(this, Observer {
       runInBackground {
@@ -132,8 +138,8 @@ class NickListFragment : ServiceBoundFragment() {
           }
           it.copy(
             displayNick = formatNick(it.nick),
-            fallbackDrawable = TextDrawable.builder().let {
-              if (messageSettings.squareAvatars) it.buildRect(initial, senderColor)
+            fallbackDrawable = TextDrawable.builder().beginConfig().textColor(colorBackground).endConfig().let {
+              if (messageSettings.squareAvatars) it.buildRoundRect(initial, senderColor, radius)
               else it.buildRound(initial, senderColor)
             },
             initial = initial,
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/helper/GlideHelper.kt b/app/src/main/java/de/kuschku/quasseldroid/util/helper/GlideHelper.kt
index 11f013106b3f6aa7f31227f660218786f549c283..c5b5afe3f5e3b55eb773bd5d42cb5bcc99ae464c 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/helper/GlideHelper.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/helper/GlideHelper.kt
@@ -22,9 +22,11 @@ package de.kuschku.quasseldroid.util.helper
 import android.graphics.drawable.Drawable
 import android.widget.ImageView
 import com.bumptech.glide.RequestBuilder
+import com.bumptech.glide.load.resource.bitmap.RoundedCorners
 import de.kuschku.quasseldroid.GlideApp
 import de.kuschku.quasseldroid.GlideRequest
 import de.kuschku.quasseldroid.GlideRequests
+import de.kuschku.quasseldroid.R
 import de.kuschku.quasseldroid.viewmodel.data.Avatar
 
 fun GlideRequests.loadWithFallbacks(urls: List<Avatar>): GlideRequest<Drawable>? {
@@ -46,8 +48,12 @@ fun ImageView.loadAvatars(urls: List<Avatar>, fallback: Drawable? = null, crop:
   if (urls.isNotEmpty()) {
     GlideApp.with(this)
       .loadWithFallbacks(urls)
-      ?.letIf(crop) {
-        it.optionalCircleCrop()
+      ?.let {
+        if (crop) {
+          it.optionalCircleCrop()
+        } else {
+          it.transform(RoundedCorners(this.context.resources.getDimensionPixelSize(R.dimen.avatar_radius)))
+        }
       }
       ?.placeholder(fallback)
       ?.into(this)
diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml
index 2b47dc9492503bce463254d6f0b5e1c01e97fed2..e861f1d65528ea9bb82e2c61b5e26b4dcf052127 100644
--- a/app/src/main/res/values/dimens.xml
+++ b/app/src/main/res/values/dimens.xml
@@ -39,6 +39,8 @@
   <dimen name="avatar_size_action">20sp</dimen>
   <dimen name="avatar_size_buffer">32dp</dimen>
 
+  <dimen name="avatar_radius">2dp</dimen>
+
   <dimen name="notification_avatar_width">64dp</dimen>
   <dimen name="notification_avatar_height">64dp</dimen>
 </resources>
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 c9e4d2f97d4b073d5c87224f04add4e8093cb175..0c39ad9c73433641514f91fd03c326f8a4adbd27 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
@@ -53,6 +53,7 @@ sealed class AutoCompleteItem(open val name: String, val suffix: String, private
     val info: BufferInfo,
     val network: INetwork.NetworkInfo,
     val bufferStatus: BufferStatus,
-    val description: CharSequence
+    val description: CharSequence,
+    val icon: Drawable? = null
   ) : AutoCompleteItem(info.bufferName ?: "", " ", 2)
 }