diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/util/irc/format/IrcFormatDeserializer.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/util/irc/format/IrcFormatDeserializer.kt
index 1033d005bce7fc658a70871323e80603ea6eea3d..51035256600bbda617cd635e0fa30b07a70b3941 100644
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/util/irc/format/IrcFormatDeserializer.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/util/irc/format/IrcFormatDeserializer.kt
@@ -196,16 +196,32 @@ class IrcFormatDeserializer(private val context: Context) {
           plainText.append(str.substring(i - normalCount, i))
           normalCount = 0
 
-          val colorStart = i + 1
-          val colorEnd = findEndOfHexNumber(str, colorStart)
+          val foregroundStart = i + 1
+          val foregroundEnd = findEndOfHexNumber(str, foregroundStart)
           // If we have a foreground element
-          if (colorEnd > colorStart) {
-            val foreground = readHexNumber(str, colorStart, colorEnd)
+          if (foregroundEnd > foregroundStart) {
+            val foreground = readHexNumber(str, foregroundStart, foregroundEnd)
+
+            var background: Int = -1
+            var backgroundEnd = -1
+            // If we have a background code, read it
+            if (str.length > foregroundEnd && str[foregroundEnd] == ',') {
+              backgroundEnd = findEndOfHexNumber(str, foregroundEnd + 1)
+              background = readHexNumber(str, foregroundEnd + 1, backgroundEnd)
+            }
+            // If previous element was also a color element, try to reuse background
+            if (hexColor != null) {
+              // Apply old format
+              if (colorize) hexColor.apply(plainText, plainText.length)
+              // Reuse old background, if possible
+              if (background == -1)
+                background = hexColor.format.background
+            }
             // Add new format
-            hexColor = FormatDescription(plainText.length, HexIrcFormat(foreground))
+            hexColor = FormatDescription(plainText.length, HexIrcFormat(foreground, background))
 
             // i points in front of the next character
-            i = colorEnd - 1
+            i = (if (backgroundEnd == -1) foregroundEnd else backgroundEnd) - 1
 
             // Otherwise assume this is a closing tag
           } else if (hexColor != null) {
@@ -326,13 +342,21 @@ class IrcFormatDeserializer(private val context: Context) {
     }
   }
 
-  private inner class HexIrcFormat(val color: Int) : IrcFormat {
+  private inner class HexIrcFormat(val foreground: Int, val background: Int) : IrcFormat {
 
     override fun applyTo(editable: SpannableStringBuilder, from: Int, to: Int) {
-      editable.setSpan(
-        IrcHexColorSpan(color or 0xFFFFFF.inv()), from, to,
-        Spanned.SPAN_INCLUSIVE_EXCLUSIVE
-      )
+      if (foreground >= 0) {
+        editable.setSpan(
+          IrcHexForegroundColorSpan(foreground or 0xFFFFFF.inv()), from, to,
+          Spanned.SPAN_INCLUSIVE_EXCLUSIVE
+        )
+      }
+      if (background >= 0) {
+        editable.setSpan(
+          IrcHexBackgroundColorSpan(background or 0xFFFFFF.inv()), from, to,
+          Spanned.SPAN_INCLUSIVE_EXCLUSIVE
+        )
+      }
     }
   }
 
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/util/irc/format/spans/IrcHexBackgroundColorSpan.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/util/irc/format/spans/IrcHexBackgroundColorSpan.kt
new file mode 100644
index 0000000000000000000000000000000000000000..a7b4f87f6f6f8ab10b3b5083257a531705f5cdbd
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/util/irc/format/spans/IrcHexBackgroundColorSpan.kt
@@ -0,0 +1,9 @@
+package de.kuschku.quasseldroid_ng.util.irc.format.spans
+
+import android.support.annotation.ColorInt
+import android.text.style.BackgroundColorSpan
+
+class IrcHexBackgroundColorSpan(@ColorInt color: Int) : BackgroundColorSpan(color),
+                                                        Copyable<IrcHexBackgroundColorSpan> {
+  override fun copy() = IrcHexBackgroundColorSpan(backgroundColor)
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/util/irc/format/spans/IrcHexColorSpan.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/util/irc/format/spans/IrcHexColorSpan.kt
deleted file mode 100644
index ef9e33e96ce8ac34c977d515d9f0c829f8ce8530..0000000000000000000000000000000000000000
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/util/irc/format/spans/IrcHexColorSpan.kt
+++ /dev/null
@@ -1,9 +0,0 @@
-package de.kuschku.quasseldroid_ng.util.irc.format.spans
-
-import android.support.annotation.ColorInt
-import android.text.style.ForegroundColorSpan
-
-class IrcHexColorSpan(@ColorInt color: Int) : ForegroundColorSpan(color),
-                                              Copyable<IrcHexColorSpan> {
-  override fun copy() = IrcHexColorSpan(foregroundColor)
-}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/util/irc/format/spans/IrcHexForegroundColorSpan.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/util/irc/format/spans/IrcHexForegroundColorSpan.kt
new file mode 100644
index 0000000000000000000000000000000000000000..b46ce023c29b0fa75878c8b2271cffbe1949c9e3
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/util/irc/format/spans/IrcHexForegroundColorSpan.kt
@@ -0,0 +1,9 @@
+package de.kuschku.quasseldroid_ng.util.irc.format.spans
+
+import android.support.annotation.ColorInt
+import android.text.style.ForegroundColorSpan
+
+class IrcHexForegroundColorSpan(@ColorInt color: Int) : ForegroundColorSpan(color),
+                                                        Copyable<IrcHexForegroundColorSpan> {
+  override fun copy() = IrcHexForegroundColorSpan(foregroundColor)
+}