diff --git a/typo3/sysext/recordlist/Classes/RecordList/DatabaseRecordList.php b/typo3/sysext/recordlist/Classes/RecordList/DatabaseRecordList.php
index 4f6f7a62af3c7fe466ad205fbd09a27c2f7296d3..a714577e090b945e5851c1b95628e4f03b7dde82 100644
--- a/typo3/sysext/recordlist/Classes/RecordList/DatabaseRecordList.php
+++ b/typo3/sysext/recordlist/Classes/RecordList/DatabaseRecordList.php
@@ -3200,6 +3200,10 @@ class DatabaseRecordList
             $queryBuilder->setMaxResults($this->iLimit);
         }
 
+        if ($this->firstElementNumber > 0) {
+            $queryBuilder->setFirstResult($this->firstElementNumber);
+        }
+
         if ($addSorting) {
             if ($this->sortField && in_array($this->sortField, $this->makeFieldList($table, 1))) {
                 $queryBuilder->orderBy($this->sortField, $this->sortRev ? 'DESC' : 'ASC');
@@ -3284,7 +3288,7 @@ class DatabaseRecordList
                 $queryBuilder->addOrderBy($fieldName, $sorting);
             }
         }
-        if (!empty($parameters['firstResult'])) {
+        if (!empty($parameters['firstResult']) && $parameters['firstResult'] !== $this->firstElementNumber) {
             $this->logDeprecation('firstResult');
             $queryBuilder->setFirstResult((int)$parameters['firstResult']);
         }
@@ -3325,6 +3329,9 @@ class DatabaseRecordList
         }
 
         $queryBuilder = $this->prepareQueryBuilder($table, $pageId, ['*'], $constraints, $queryBuilder, false);
+        // Reset limit and offset for full count query
+        $queryBuilder->setFirstResult(0);
+        $queryBuilder->setMaxResults(1);
 
         $this->totalItems = (int)$queryBuilder->count('*')
             ->execute()