diff --git a/.gitlab/pipeline/build.yml b/.gitlab/pipeline/build.yml
index 3c870e576a8dd1853cc3a4cf85dbc5a90ff26504..8658e92efc8f9f7ae463a67a52eaf3d3d37df2f7 100644
--- a/.gitlab/pipeline/build.yml
+++ b/.gitlab/pipeline/build.yml
@@ -91,7 +91,7 @@ build-rustdoc:
     - .run-immediately
   variables:
     SKIP_WASM_BUILD: 1
-    RUSTDOCFLAGS: "--default-theme=ayu --html-in-header ./docs/sdk/headers/header.html --extend-css ./docs/sdk/headers/theme.css"
+    RUSTDOCFLAGS: "-Dwarnings --default-theme=ayu --html-in-header ./docs/sdk/assets/header.html --extend-css ./docs/sdk/assets/theme.css --html-after-content ./docs/sdk/assets/after-content.html"
   artifacts:
     name: "${CI_JOB_NAME}_${CI_COMMIT_REF_NAME}-doc"
     when: on_success
@@ -99,8 +99,7 @@ build-rustdoc:
     paths:
       - ./crate-docs/
   script:
-    # FIXME: it fails with `RUSTDOCFLAGS="-Dwarnings"` and `--all-features`
-    - time cargo doc --features try-runtime,experimental --workspace --no-deps
+    - time cargo doc --all-features --workspace --no-deps
     - rm -f ./target/doc/.lock
     - mv ./target/doc ./crate-docs
     # Inject Simple Analytics (https://www.simpleanalytics.com/) privacy preserving tracker into
diff --git a/cumulus/test/service/src/chain_spec.rs b/cumulus/test/service/src/chain_spec.rs
index 61bbf755d890aab92c0c714663a7e24c1c286696..e86023576ac5011ff8656567ec978c287bf13601 100644
--- a/cumulus/test/service/src/chain_spec.rs
+++ b/cumulus/test/service/src/chain_spec.rs
@@ -34,7 +34,7 @@ pub fn get_from_seed<TPublic: Public>(seed: &str) -> <TPublic::Pair as Pair>::Pu
 		.public()
 }
 
-/// The extensions for the [`ChainSpec`](crate::ChainSpec).
+/// The extensions for the [`ChainSpec`].
 #[derive(Debug, Clone, PartialEq, Serialize, Deserialize, ChainSpecGroup, ChainSpecExtension)]
 #[serde(deny_unknown_fields)]
 pub struct Extensions {
diff --git a/docs/sdk/assets/after-content.html b/docs/sdk/assets/after-content.html
new file mode 100644
index 0000000000000000000000000000000000000000..30ae5c7ec430b46c5854cbcdd39b5d66d1ad3fd0
--- /dev/null
+++ b/docs/sdk/assets/after-content.html
@@ -0,0 +1,2 @@
+<script> mermaid.init({ startOnLoad: true, theme: "dark" }, "pre.language-mermaid > code");</script>
+
diff --git a/docs/sdk/headers/header.html b/docs/sdk/assets/header.html
similarity index 97%
rename from docs/sdk/headers/header.html
rename to docs/sdk/assets/header.html
index e28458c4ccc791d9a72613ffb530b685828ea828..f55c31b53216cddc5da94099efc3566c27bdfe63 100644
--- a/docs/sdk/headers/header.html
+++ b/docs/sdk/assets/header.html
@@ -84,6 +84,8 @@
 	});
 </script>
 
+<script src="https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js"></script>
+
 <style>
 	body.sdk-docs {
 		nav.side-bar {
diff --git a/docs/sdk/headers/theme.css b/docs/sdk/assets/theme.css
similarity index 100%
rename from docs/sdk/headers/theme.css
rename to docs/sdk/assets/theme.css
diff --git a/prdoc/pr_3875.prdoc b/prdoc/pr_3875.prdoc
new file mode 100644
index 0000000000000000000000000000000000000000..59cc3792d395be186c95857b021130273413916c
--- /dev/null
+++ b/prdoc/pr_3875.prdoc
@@ -0,0 +1,11 @@
+# Schema: Polkadot SDK PRDoc Schema (prdoc) v1.0.0
+# See doc at https://raw.githubusercontent.com/paritytech/polkadot-sdk/master/prdoc/schema_user.json
+
+title: Fix Mermaid diagram rendering
+
+doc:
+  - audience: Runtime Dev
+    description: |
+      Fixes the rendering of some Mermaid diagrams in the documentation.
+
+crates: [ ]
diff --git a/substrate/frame/assets/src/lib.rs b/substrate/frame/assets/src/lib.rs
index e5fe2a3d1fd3965b31563480e45eb99fecfd05b7..6891f04dfb51aae356a708112a7bba284e894be2 100644
--- a/substrate/frame/assets/src/lib.rs
+++ b/substrate/frame/assets/src/lib.rs
@@ -18,8 +18,7 @@
 //! # Assets Pallet
 //!
 //! A simple, secure module for dealing with sets of assets implementing
-//! [`fungible`](frame_support::traits::fungible) traits, via
-//! [`fungibles`](frame_support::traits::fungibles) traits.
+//! [`fungible`](frame_support::traits::fungible) traits, via [`fungibles`] traits.
 //!
 //! The pallet makes heavy use of concepts such as Holds and Freezes from the
 //! [`frame_support::traits::fungible`] traits, therefore you should read and understand those docs