diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/irc/format/ContentFormatter.kt b/app/src/main/java/de/kuschku/quasseldroid/util/irc/format/ContentFormatter.kt
index 7c0ae3c1473c8624e9e0d7b907701050cc167868..2ba3631dcd9b6b3a0331b772dadb4ee61c9b91d5 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/irc/format/ContentFormatter.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/irc/format/ContentFormatter.kt
@@ -127,7 +127,6 @@ class ContentFormatter @Inject constructor(
       }
     }
 
-    spans.reverse()
     for (span in spans) {
       span.apply(formattedText)
     }
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/irc/format/model/IrcFormat.kt b/app/src/main/java/de/kuschku/quasseldroid/util/irc/format/model/IrcFormat.kt
index 9a5c5e35ad0ae9ae8b4a569c1cdf58f07621e27a..9ec3c428dc9265a22df8c4369b5e9204d8f5fabf 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/irc/format/model/IrcFormat.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/irc/format/model/IrcFormat.kt
@@ -22,8 +22,6 @@ package de.kuschku.quasseldroid.util.irc.format.model
 import android.text.Spannable
 import android.text.Spanned
 import de.kuschku.libquassel.protocol.NetworkId
-import de.kuschku.quasseldroid.util.irc.format.ChannelLinkSpan
-import de.kuschku.quasseldroid.util.irc.format.QuasselURLSpan
 import de.kuschku.quasseldroid.util.irc.format.spans.*
 
 sealed class IrcFormat {
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/irc/format/ChannelLinkSpan.kt b/app/src/main/java/de/kuschku/quasseldroid/util/irc/format/spans/ChannelLinkSpan.kt
similarity index 96%
rename from app/src/main/java/de/kuschku/quasseldroid/util/irc/format/ChannelLinkSpan.kt
rename to app/src/main/java/de/kuschku/quasseldroid/util/irc/format/spans/ChannelLinkSpan.kt
index 7e9be6eb1b4e34f64c4774549abd4bbee97f1831..1f0744a4143fb4632ca4d0575dec7e23886d06dd 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/irc/format/ChannelLinkSpan.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/irc/format/spans/ChannelLinkSpan.kt
@@ -17,7 +17,7 @@
  * with this program. If not, see <http://www.gnu.org/licenses/>.
  */
 
-package de.kuschku.quasseldroid.util.irc.format
+package de.kuschku.quasseldroid.util.irc.format.spans
 
 import android.text.TextPaint
 import android.text.style.ClickableSpan
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/irc/format/spans/IrcForegroundColorSpan.kt b/app/src/main/java/de/kuschku/quasseldroid/util/irc/format/spans/IrcForegroundColorSpan.kt
index c5d44080213b14ca5787e5236f8979088fe79d26..daa3f07791096dd38834b09820dda28f2ec19fc1 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/irc/format/spans/IrcForegroundColorSpan.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/irc/format/spans/IrcForegroundColorSpan.kt
@@ -19,18 +19,26 @@
 
 package de.kuschku.quasseldroid.util.irc.format.spans
 
+import android.text.TextPaint
 import android.text.style.ForegroundColorSpan
 import androidx.annotation.ColorInt
 
 sealed class IrcForegroundColorSpan<T : IrcForegroundColorSpan<T>>(@ColorInt color: Int) :
   ForegroundColorSpan(color), Copyable<T> {
 
+  override fun updateDrawState(ds: TextPaint?) {
+    if (ds != null) {
+      ds.color = foregroundColor
+      ds.linkColor = foregroundColor
+    }
+  }
 
   class MIRC(private val mircColor: Int, @ColorInt color: Int) :
     IrcForegroundColorSpan<MIRC>(color), Copyable<MIRC> {
     override fun copy() = MIRC(mircColor, foregroundColor)
     override fun toString(): String {
-      return "IrcForegroundColorSpan.MIRC(mircColor=$mircColor, color=${foregroundColor.toString(16)})"
+      return "IrcForegroundColorSpan.MIRC(mircColor=$mircColor, color=${foregroundColor.toUInt().toString(
+        16)})"
     }
 
     override fun equals(other: Any?) = when (other) {
@@ -43,7 +51,7 @@ sealed class IrcForegroundColorSpan<T : IrcForegroundColorSpan<T>>(@ColorInt col
     IrcForegroundColorSpan<HEX>(color), Copyable<HEX> {
     override fun copy() = HEX(foregroundColor)
     override fun toString(): String {
-      return "IrcBackgroundColorSpan.HEX(color=${foregroundColor.toString(16)})"
+      return "IrcBackgroundColorSpan.HEX(color=${foregroundColor.toUInt().toString(16)})"
     }
 
     override fun equals(other: Any?) = when (other) {
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/irc/format/QuasselURLSpan.kt b/app/src/main/java/de/kuschku/quasseldroid/util/irc/format/spans/QuasselURLSpan.kt
similarity index 95%
rename from app/src/main/java/de/kuschku/quasseldroid/util/irc/format/QuasselURLSpan.kt
rename to app/src/main/java/de/kuschku/quasseldroid/util/irc/format/spans/QuasselURLSpan.kt
index 14921b3c7b6a677f399d1149c2631e9f951bdcc8..ce670ced4f6f54b5035ffcb9485ec4755299508d 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/irc/format/QuasselURLSpan.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/irc/format/spans/QuasselURLSpan.kt
@@ -17,7 +17,7 @@
  * with this program. If not, see <http://www.gnu.org/licenses/>.
  */
 
-package de.kuschku.quasseldroid.util.irc.format
+package de.kuschku.quasseldroid.util.irc.format.spans
 
 import android.text.TextPaint
 import android.text.style.URLSpan