diff --git a/settings/ajax/userlist.php b/settings/ajax/userlist.php
index 87b42395749c74398b78cd12db4caf40023b13b0..4abf54b8987e36ed2b598d3afa1c2a0044137ec6 100644
--- a/settings/ajax/userlist.php
+++ b/settings/ajax/userlist.php
@@ -27,9 +27,14 @@ if (isset($_GET['offset'])) {
 } else {
 	$offset = 0;
 }
+if (isset($_GET['limit'])) {
+	$limit = $_GET['limit'];
+} else {
+	$limit = 10;
+}
 $users = array();
 if (OC_User::isAdminUser(OC_User::getUser())) {
-	$batch = OC_User::getDisplayNames('', 10, $offset);
+	$batch = OC_User::getDisplayNames('', $limit, $offset);
 	foreach ($batch as $user => $displayname) {
 		$users[] = array(
 			'name' => $user,
@@ -40,7 +45,7 @@ if (OC_User::isAdminUser(OC_User::getUser())) {
 	}
 } else {
 	$groups = OC_SubAdmin::getSubAdminsGroups(OC_User::getUser());
-	$batch = OC_Group::usersInGroups($groups, '', 10, $offset);
+	$batch = OC_Group::usersInGroups($groups, '', $limit, $offset);
 	foreach ($batch as $user) {
 		$users[] = array(
 			'name' => $user,
diff --git a/settings/js/users.js b/settings/js/users.js
index 4a358a4392d6490d81f871fe7426bf2c10c72e82..690c9ad046440998c8b787ee0a96fdc57f23d7f8 100644
--- a/settings/js/users.js
+++ b/settings/js/users.js
@@ -19,6 +19,10 @@ function setQuota (uid, quota, ready) {
 var UserList = {
 	useUndo: true,
 	availableGroups: [],
+	offset: 30, //The first 30 users are there. No prob, if less in total.
+				//hardcoded in settings/users.php
+
+	usersToLoad: 10, //So many users will be loaded when user scrolls down
 
 	/**
 	 * @brief Initiate user deletion process in UI
@@ -192,14 +196,17 @@ var UserList = {
 			return;
 		}
 		UserList.updating = true;
-		$.get(OC.Router.generate('settings_ajax_userlist', { offset: UserList.offset }), function (result) {
+		$.get(OC.Router.generate('settings_ajax_userlist', { offset: UserList.offset, limit: UserList.usersToLoad }), function (result) {
 			if (result.status === 'success') {
+				//The offset does not mirror the amount of users available,
+				//because it is backend-dependent. For correct retrieval,
+				//always the limit(requested amount of users) needs to be added.
+				UserList.offset += UserList.usersToLoad;
 				$.each(result.data, function (index, user) {
 					if($('tr[data-uid="' + user.name + '"]').length > 0) {
 						return true;
 					}
 					var tr = UserList.add(user.name, user.displayname, user.groups, user.subadmin, user.quota, false);
-					UserList.offset++;
 					if (index == 9) {
 						$(tr).bind('inview', function (event, isInView, visiblePartX, visiblePartY) {
 							$(this).unbind(event);
@@ -315,7 +322,6 @@ $(document).ready(function () {
 
 	UserList.doSort();
 	UserList.availableGroups = $('#content table').attr('data-groups').split(', ');
-	UserList.offset = $('tbody tr').length;
 	$('tbody tr:last').bind('inview', function (event, isInView, visiblePartX, visiblePartY) {
 		OC.Router.registerLoadedCallback(function () {
 			UserList.update();