diff --git a/js/app/Config.js b/js/app/Config.js
index c22d7e9a5..441c6e54d 100644
--- a/js/app/Config.js
+++ b/js/app/Config.js
@@ -34,6 +34,10 @@ app.config(function ($routeProvider, $provide, $httpProvider, $locationProvider)
     $provide.constant('MARK_READ_TIMEOUT', 0.5);
     $provide.constant('SCROLL_TIMEOUT', 0.1);
 
+    const majorVersion = parseInt($('#app-content').data('nc-major-version') || 0, 10);
+    $provide.constant('NC_MAJOR_VERSION', majorVersion);
+    window.NEWS_NC_MAJOR_VERSION = majorVersion;
+
     // make sure that the CSRF header is only sent to the Nextcloud domain
     $provide.factory('CSRFInterceptor', function ($q, BASE_URL, $window) {
         return {
diff --git a/js/directive/NewsScroll.js b/js/directive/NewsScroll.js
index afbd3b703..a5e620b80 100644
--- a/js/directive/NewsScroll.js
+++ b/js/directive/NewsScroll.js
@@ -8,21 +8,17 @@
  * @copyright Bernhard Posselt 2014
  */
 app.directive('newsScroll', function ($timeout, ITEM_AUTO_PAGE_SIZE,
-    MARK_READ_TIMEOUT, SCROLL_TIMEOUT) {
+    MARK_READ_TIMEOUT, SCROLL_TIMEOUT, NC_MAJOR_VERSION) {
     'use strict';
     var timer;
 
 
     var scrollElement = function() {
-        const appContentElem = $('#app-content');
-        const majorVersion = parseInt($('#app-content').data('nc-major-version') || 0, 10);
-        if (majorVersion >= 25) {
-            return appContentElem;
+        // This should be in sync with the same function in js/gui/KeyboardShortcuts.js
+        if (NC_MAJOR_VERSION >= 25) {
+            return  $('#app-content');
         }
-        if (majorVersion === 24) {
-            return $(window);
-        }
-        return $('html');
+        return $(window);
     };
 
     // autopaging
diff --git a/js/gui/KeyboardShortcuts.js b/js/gui/KeyboardShortcuts.js
index b6310fef5..9ddcb582d 100644
--- a/js/gui/KeyboardShortcuts.js
+++ b/js/gui/KeyboardShortcuts.js
@@ -16,6 +16,14 @@
 (function (window, document, $) {
     'use strict';
 
+    var scrollElement = function() {
+        // This should be in sync with the same function in js/directive/NewsScroll.js
+        if (window.NEWS_NC_MAJOR_VERSION >= 25) {
+            return  $('#app-content');
+        }
+        return $(window);
+    };
+
     var noInputFocused = function (element) {
         return !(
             element.is('input') ||
@@ -223,34 +231,34 @@
         }
     };
 
-    var getActiveElement = function (scrollArea) {
-        return scrollArea.find('.item.active:first');
+    var getActiveElement = function () {
+        return $('#app-content').find('.item.active:first');
     };
 
-    var onActiveItem = function (scrollArea, callback) {
-        callback(getActiveElement(scrollArea));
+    var onActiveItem = function (callback) {
+        callback(getActiveElement());
     };
 
-    var toggleUnread = function (scrollArea) {
-        onActiveItem(scrollArea, function (item) {
+    var toggleUnread = function () {
+        onActiveItem(function (item) {
             item.find('.toggle-keep-unread').trigger('click');
         });
     };
 
-    var toggleStar = function (scrollArea) {
-        onActiveItem(scrollArea, function (item) {
+    var toggleStar = function () {
+        onActiveItem(function (item) {
             item.find('.star').trigger('click');
         });
     };
 
-    var expandItem = function (scrollArea) {
-        onActiveItem(scrollArea, function (item) {
+    var expandItem = function () {
+        onActiveItem(function (item) {
             item.find('.utils').trigger('click');
         });
     };
 
-    var openLink = function (scrollArea) {
-        onActiveItem(scrollArea, function (item) {
+    var openLink = function () {
+        onActiveItem(function (item) {
             item.trigger('click');  // mark read
             var url = item.find('.external:visible').attr('href');
             var newWindow = window.open(url, '_blank');
@@ -265,9 +273,14 @@
     var scrollToItem = function (scrollArea, item, expandItemInCompact) {
         // if you go to the next article in compact view, it should
         // expand the current one
-        scrollArea.scrollTop(
-            item.offset().top - 50
-        );
+
+        if (window.NEWS_NC_MAJOR_VERSION >= 25) {
+            scrollArea.scrollTop(scrollArea.scrollTop() + item.offset().top - 50);
+        } else {
+            scrollArea.scrollTop(
+                item.offset().top - 50
+            );
+        }
 
         setItemActive(item[0]);
 
@@ -279,7 +292,7 @@
     };
 
     var scrollToNextItem = function (scrollArea, expandItemInCompact) {
-        var activeElement = getActiveElement(scrollArea);
+        var activeElement = getActiveElement();
         // in expand in compact mode, jumping to the next item should open
         // the current one if it's not open yet
         if (expandItemInCompact && !activeElement.hasClass('open')) {
@@ -300,7 +313,7 @@
 
     var scrollToPreviousItem = function (scrollArea,
                                          expandItemInCompact) {
-        var activeElement = getActiveElement(scrollArea);
+        var activeElement = getActiveElement();
         var previousElement = activeElement.prev();
 
         // if the active element has been scrolled, the previous element
@@ -321,18 +334,19 @@
             items.each(function (index, item) {
                 var $item = $(item);
                 var bottom = $item.position().top + $item.outerHeight(true);
-                if ((bottom - 20) >= 0) {
+                var scrollBottom =  scrollElement().scrollTop();
+                if (bottom - 20 >= scrollBottom) {
                     setItemActive(item);
-                    return false;
+                    return false;                        
                 }
             });
         };
-        $('#app-content').scroll(_.debounce(detectAndSetActiveItem, 250));
+        scrollElement().scroll(_.debounce(detectAndSetActiveItem, 250));
     });
 
     $(document).keyup(function (event) {
         var keyCode = event.keyCode;
-        var scrollArea = $(document);
+        var scrollArea = scrollElement();
         var navigationArea = $('#app-navigation');
         var isCompactView = $('#articles.compact').length > 0;
         var isExpandItem = $('#articles')
diff --git a/lib/Controller/PageController.php b/lib/Controller/PageController.php
index 9f17f5690..abdd3f2f7 100644
--- a/lib/Controller/PageController.php
+++ b/lib/Controller/PageController.php
@@ -86,6 +86,7 @@ class PageController extends Controller
             $this->appName,
             'index',
             [
+                'nc_major_version' => \OCP\Util::getVersion()[0],
                 'warnings' => $status['warnings'],
                 'url_generator' => $this->urlGenerator
             ]