diff --git a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/blog/HtmlText.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/blog/HtmlText.kt
index b8e5da5a11f0a2743110673f146caf02ffb6f50f..8c8d0ac1d724d899cf4f8f89bfcdf8eb494fcad7 100644
--- a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/blog/HtmlText.kt
+++ b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/blog/HtmlText.kt
@@ -18,21 +18,26 @@
 
 package org.briarproject.briar.desktop.blog
 
-import androidx.compose.foundation.text.ClickableText
+import androidx.compose.foundation.ExperimentalFoundationApi
+import androidx.compose.foundation.text.BasicText
 import androidx.compose.material.MaterialTheme
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.getValue
 import androidx.compose.runtime.mutableStateOf
 import androidx.compose.runtime.remember
 import androidx.compose.runtime.setValue
+import androidx.compose.ui.ExperimentalComposeUiApi
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.draw.drawBehind
 import androidx.compose.ui.geometry.Rect
 import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.graphics.drawscope.DrawScope
+import androidx.compose.ui.input.pointer.PointerEventType
+import androidx.compose.ui.input.pointer.onPointerEvent
 import androidx.compose.ui.text.AnnotatedString
 import androidx.compose.ui.text.ParagraphStyle
 import androidx.compose.ui.text.SpanStyle
+import androidx.compose.ui.text.TextLayoutResult
 import androidx.compose.ui.text.TextStyle
 import androidx.compose.ui.text.buildAnnotatedString
 import androidx.compose.ui.text.font.FontFamily
@@ -67,6 +72,7 @@ val listBullets = listOf(
     "\u25aa",
 )
 
+@OptIn(ExperimentalComposeUiApi::class, ExperimentalFoundationApi::class)
 @Composable
 @Suppress("HardCodedStringLiteral")
 fun HtmlText(
@@ -330,22 +336,28 @@ fun HtmlText(
     }
 
     var onDraw: DrawScope.() -> Unit by remember { mutableStateOf({}) }
+    var lastLayoutResult: TextLayoutResult? by remember { mutableStateOf(null) }
 
-    ClickableText(
+    BasicText(
         text = formattedString,
-        modifier = modifier.drawBehind { onDraw() },
+        modifier = modifier
+            .drawBehind { onDraw() }
+            // workaround for https://github.com/JetBrains/compose-multiplatform/issues/1450
+            // todo: when fixed, change to ClickableText and move logic to onClick parameter
+            .onPointerEvent(PointerEventType.Release) {
+                val offset = lastLayoutResult?.getOffsetForPosition(it.changes.first().position) ?: 0
+                formattedString
+                    .getStringAnnotations(tag = "link", start = offset, end = offset)
+                    .firstOrNull()
+                    ?.let { annotation ->
+                        handleLink(annotation.item)
+                    }
+            },
         overflow = overflow,
         maxLines = maxLines,
         style = MaterialTheme.typography.body1.copy(color = MaterialTheme.colors.onSurface),
-        onClick = { offset ->
-            formattedString
-                .getStringAnnotations(start = offset, end = offset)
-                .firstOrNull { it.tag == "link" }
-                ?.let { annotation ->
-                    handleLink(annotation.item)
-                }
-        },
         onTextLayout = { layoutResult ->
+            lastLayoutResult = layoutResult
             val quotes = formattedString.getStringAnnotations("quote").map {
                 val firstLine = layoutResult.getLineForOffset(it.start)
                 val lastLine = layoutResult.getLineForOffset(it.end - 1)