Some more refresh fixes...

Should fix #1140 (1063ee7) & both ghosting issues reported in #1119 (eef26a0)

Bundles an unrelated logic fix (3d5dd44)

And a new possible cause of issues :D. (1ee0901)
Something along the lines of

```diff
diff --git a/frontend/ui/uimanager.lua b/frontend/ui/uimanager.lua
index bab30fb..038d664 100644
--- a/frontend/ui/uimanager.lua
+++ b/frontend/ui/uimanager.lua
@@ -63,6 +63,7 @@ local UIManager = {
     -- trigger a full refresh when counter reaches FULL_REFRESH_COUNT
     FULL_REFRESH_COUNT = G_reader_settings:readSetting("full_refresh_count") or DRCOUNTMAX,
     refresh_count = 0,
+    update_regions_func = nil,
 
     event_handlers = nil,
 
@@ -264,6 +265,16 @@ function UIManager:unschedule(action)
     end
 end
 
+-- set the screen regions to update on next run
+function UIManager:setUpdateRegions(update_regions_func)
+    self.update_regions_func = update_regions_func
+end
+
+-- get screen regions currently set to update on next run
+function UIManager:getUpdateRegions(rate)
+    return self.update_regions_func
+end
+
 -- register a widget to be repainted
 function UIManager:setDirty(widget, refresh_type)
     -- "auto": request full refresh
diff --git a/frontend/ui/widget/scrolltextwidget.lua b/frontend/ui/widget/scrolltextwidget.lua
index 707ad11..d2b4f08 100644
--- a/frontend/ui/widget/scrolltextwidget.lua
+++ b/frontend/ui/widget/scrolltextwidget.lua
@@ -77,9 +77,11 @@ function ScrollTextWidget:onScrollText(arg, ges)
         self.text_widget:scrollUp()
         self:updateScrollBar(self.text_widget)
     end
-    UIManager.update_regions_func = function()
-        return {self.dimen}
-    end
+    UIManager:setUpdateRegions(
+        function()
+            return {self.dimen}
+        end
+    )
     UIManager:setDirty(self.dialog, "partial")
 end
 
```

?