diff --git a/src/all/fmreader/build.gradle b/src/all/fmreader/build.gradle
index c669b1b42..a52cfcea5 100644
--- a/src/all/fmreader/build.gradle
+++ b/src/all/fmreader/build.gradle
@@ -5,7 +5,7 @@ ext {
     appName = 'Tachiyomi: FMReader (multiple aggregators)'
     pkgNameSuffix = 'all.fmreader'
     extClass = '.FMReaderFactory'
-    extVersionCode = 16
+    extVersionCode = 17
     libVersion = '1.2'
 }
 
diff --git a/src/all/fmreader/src/eu/kanade/tachiyomi/extension/all/fmreader/FMReader.kt b/src/all/fmreader/src/eu/kanade/tachiyomi/extension/all/fmreader/FMReader.kt
index cdc232130..9ee5b4f20 100644
--- a/src/all/fmreader/src/eu/kanade/tachiyomi/extension/all/fmreader/FMReader.kt
+++ b/src/all/fmreader/src/eu/kanade/tachiyomi/extension/all/fmreader/FMReader.kt
@@ -1,5 +1,6 @@
 package eu.kanade.tachiyomi.extension.all.fmreader
 
+import android.util.Base64
 import eu.kanade.tachiyomi.network.GET
 import eu.kanade.tachiyomi.source.model.Filter
 import eu.kanade.tachiyomi.source.model.FilterList
@@ -9,6 +10,7 @@ import eu.kanade.tachiyomi.source.model.SChapter
 import eu.kanade.tachiyomi.source.model.SManga
 import eu.kanade.tachiyomi.source.online.ParsedHttpSource
 import eu.kanade.tachiyomi.util.asJsoup
+import java.nio.charset.Charset
 import java.util.Calendar
 import okhttp3.Headers
 import okhttp3.HttpUrl
@@ -33,7 +35,7 @@ abstract class FMReader(
     override val client: OkHttpClient = network.cloudflareClient
 
     override fun headersBuilder() = Headers.Builder().apply {
-        add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64) Gecko/20100101 Firefox/75.0")
+        add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64) Gecko/20100101 Firefox/77.0")
         add("Referer", baseUrl)
     }
 
@@ -259,6 +261,21 @@ abstract class FMReader(
         }
     }
 
+    protected fun base64PageListParse(document: Document): List<Page> {
+        fun Element.decoded(): String {
+            val attr = if (this.hasAttr("data-original")) "data-original" else "data-src"
+            return if (!this.attr(attr).contains(".")) {
+                Base64.decode(this.attr(attr), Base64.DEFAULT).toString(Charset.defaultCharset())
+            } else {
+                this.attr("abs:$attr")
+            }
+        }
+
+        return document.select(pageListImageSelector).mapIndexed { i, img ->
+            Page(i, document.location(), img.decoded())
+        }
+    }
+
     override fun imageUrlParse(document: Document): String = throw UnsupportedOperationException("Not used")
 
     private class TextField(name: String, val key: String) : Filter.Text(name)
diff --git a/src/all/fmreader/src/eu/kanade/tachiyomi/extension/all/fmreader/FMReaderFactory.kt b/src/all/fmreader/src/eu/kanade/tachiyomi/extension/all/fmreader/FMReaderFactory.kt
index c51162eaa..1725dd06d 100644
--- a/src/all/fmreader/src/eu/kanade/tachiyomi/extension/all/fmreader/FMReaderFactory.kt
+++ b/src/all/fmreader/src/eu/kanade/tachiyomi/extension/all/fmreader/FMReaderFactory.kt
@@ -25,7 +25,6 @@ class FMReaderFactory : SourceFactory {
     override fun createSources(): List<Source> = listOf(
         LHTranslation(),
         KissLove(),
-        MangaBone(),
         ReadComicOnlineOrg(),
         HanaScan(),
         RawLH(),
@@ -47,8 +46,9 @@ class FMReaderFactory : SourceFactory {
 
 class LHTranslation : FMReader("LHTranslation", "https://lhtranslation.net", "en")
 
-class KissLove : FMReader("KissLove", "https://kisslove.net", "ja")
-class MangaBone : FMReader("MangaBone", "https://mangabone.com", "en")
+class KissLove : FMReader("KissLove", "https://kisslove.net", "ja") {
+    override fun pageListParse(document: Document): List<Page> = base64PageListParse(document)
+}
 
 class ReadComicOnlineOrg : FMReader("ReadComicOnline.org", "https://readcomiconline.org", "en") {
     override val client: OkHttpClient = network.cloudflareClient.newBuilder()
@@ -94,6 +94,7 @@ class HanaScan : FMReader("HanaScan (RawQQ)", "https://hanascan.com", "ja") {
 
 class RawLH : FMReader("RawLH", "https://loveheaven.net", "ja") {
     override fun popularMangaNextPageSelector() = "div.col-md-8 button"
+    override fun pageListParse(document: Document): List<Page> = base64PageListParse(document)
     // Referer needs to be chapter URL
     override fun imageRequest(page: Page): Request = GET(page.imageUrl!!, headersBuilder().set("Referer", page.url).build())
 }