diff --git a/typo3/sysext/backend/Classes/Form/FormEngine.php b/typo3/sysext/backend/Classes/Form/FormEngine.php
index 7fc64f08a0a28e9cbc9e553f95caae4e05b1615d..b8ac1438c705d86b5885191940e8b5e024be549b 100644
--- a/typo3/sysext/backend/Classes/Form/FormEngine.php
+++ b/typo3/sysext/backend/Classes/Form/FormEngine.php
@@ -1231,31 +1231,32 @@ class FormEngine {
 				FormEngineValidation.registerReady();
 			}';
 
+			$pageRenderer = $this->getPageRenderer();
 			foreach ($this->requireJsModules as $moduleName => $callbacks) {
 				if (!is_array($callbacks)) {
 					$callbacks = array($callbacks);
 				}
 				foreach ($callbacks as $callback) {
-					$this->getPageRenderer()->loadRequireJsModule($moduleName, $callback);
+					$pageRenderer->loadRequireJsModule($moduleName, $callback);
 				}
 			}
-			$this->getPageRenderer()->loadPrototype();
-			$this->getPageRenderer()->loadJquery();
-			$this->getPageRenderer()->loadExtJS();
+			$pageRenderer->loadPrototype();
+			$pageRenderer->loadJquery();
+			$pageRenderer->loadExtJS();
 			// rtehtmlarea needs extjs quick tips (?)
-			$this->getPageRenderer()->enableExtJSQuickTips();
+			$pageRenderer->enableExtJSQuickTips();
 			$beUserAuth = $this->getBackendUserAuthentication();
 			// Make textareas resizable and flexible ("autogrow" in height)
 			$textareaSettings = array(
 				'autosize'  => (bool)$beUserAuth->uc['resizeTextareas_Flexible']
 			);
-			$this->getPageRenderer()->addInlineSettingArray('Textarea', $textareaSettings);
+			$pageRenderer->addInlineSettingArray('Textarea', $textareaSettings);
 
 			$this->loadJavascriptLib('sysext/backend/Resources/Public/JavaScript/jsfunc.tbe_editor.js');
-			$this->getPageRenderer()->loadRequireJsModule('TYPO3/CMS/Backend/ValueSlider');
+			$pageRenderer->loadRequireJsModule('TYPO3/CMS/Backend/ValueSlider');
 			// Needed for FormEngine manipulation (date picker)
 			$dateFormat = ($GLOBALS['TYPO3_CONF_VARS']['SYS']['USdateFormat'] ? array('MM-DD-YYYY', 'HH:mm MM-DD-YYYY') : array('DD-MM-YYYY', 'HH:mm DD-MM-YYYY'));
-			$this->getPageRenderer()->addInlineSetting('DateTimePicker', 'DateFormat', $dateFormat);
+			$pageRenderer->addInlineSetting('DateTimePicker', 'DateFormat', $dateFormat);
 
 			// support placeholders for IE9 and lower
 			$clientInfo = GeneralUtility::clientInfo();
@@ -1264,13 +1265,13 @@ class FormEngine {
 			}
 
 			// @todo: remove scriptaclous once suggest & flex form foo is moved to RequireJS, see #55575
-			$this->getPageRenderer()->loadScriptaculous();
+			$pageRenderer->loadScriptaculous();
 			$this->loadJavascriptLib('sysext/backend/Resources/Public/JavaScript/jsfunc.tceforms_suggest.js');
 
-			$this->getPageRenderer()->loadRequireJsModule('TYPO3/CMS/Filelist/FileListLocalisation');
-			$this->getPageRenderer()->loadRequireJsModule('TYPO3/CMS/Backend/DragUploader');
+			$pageRenderer->loadRequireJsModule('TYPO3/CMS/Filelist/FileListLocalisation');
+			$pageRenderer->loadRequireJsModule('TYPO3/CMS/Backend/DragUploader');
 
-			$this->getPageRenderer()->addInlineLanguagelabelFile(
+			$pageRenderer->addInlineLanguagelabelFile(
 				\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath('lang') . 'locallang_core.xlf',
 				'file_upload'
 			);
@@ -1329,11 +1330,12 @@ class FormEngine {
 	 */
 	public function printNeededJSFunctions() {
 		// set variables to be accessible for JS
-		$this->getPageRenderer()->addInlineSetting('FormEngine', 'formName', 'editform');
-		$this->getPageRenderer()->addInlineSetting('FormEngine', 'backPath', '');
+		$pageRenderer = $this->getPageRenderer();
+		$pageRenderer->addInlineSetting('FormEngine', 'formName', 'editform');
+		$pageRenderer->addInlineSetting('FormEngine', 'backPath', '');
 
 		// Integrate JS functions for the element browser if such fields or IRRE fields were processed
-		$this->getPageRenderer()->addInlineSetting('FormEngine', 'legacyFieldChangedCb', 'function() { ' . $this->TBE_EDITOR_fieldChanged_func . ' };');
+		$pageRenderer->addInlineSetting('FormEngine', 'legacyFieldChangedCb', 'function() { ' . $this->TBE_EDITOR_fieldChanged_func . ' };');
 
 		return $this->JSbottom('editform');
 	}
diff --git a/typo3/sysext/backend/Classes/Template/DocumentTemplate.php b/typo3/sysext/backend/Classes/Template/DocumentTemplate.php
index 1858b961259ef321069da177c4f2e3b0a747f389..2ec11b0c8c2c54febfdae072f5236c57361f3057 100644
--- a/typo3/sysext/backend/Classes/Template/DocumentTemplate.php
+++ b/typo3/sysext/backend/Classes/Template/DocumentTemplate.php
@@ -354,7 +354,7 @@ function jumpToUrl(URL) {
 	/**
 	 * @var PageRenderer
 	 */
-	protected $pageRenderer;
+	protected $pageRenderer = NULL;
 
 	/**
 	 * Alternative template file
@@ -385,7 +385,7 @@ function jumpToUrl(URL) {
 	 */
 	public function __construct() {
 		// Initializes the page rendering object:
-		$this->getPageRenderer();
+		$this->initPageRenderer();
 
 		// load Legacy CSS Support
 		$this->pageRenderer->loadRequireJsModule('TYPO3/CMS/Backend/LegacyCssClasses');
@@ -433,38 +433,48 @@ function jumpToUrl(URL) {
 		}
 	}
 
+	/**
+	 * Initializes the page renderer object
+	 */
+	protected function initPageRenderer() {
+		if ($this->pageRenderer !== NULL) {
+			return;
+		}
+		$this->pageRenderer = GeneralUtility::makeInstance(PageRenderer::class);
+		$this->pageRenderer->setLanguage($GLOBALS['LANG']->lang);
+		$this->pageRenderer->enableConcatenateFiles();
+		$this->pageRenderer->enableCompressCss();
+		$this->pageRenderer->enableCompressJavascript();
+		// Add all JavaScript files defined in $this->jsFiles to the PageRenderer
+		foreach ($this->jsFilesNoConcatenation as $file) {
+			$this->pageRenderer->addJsFile(
+				$GLOBALS['BACK_PATH'] . $file,
+				'text/javascript',
+				TRUE,
+				FALSE,
+				'',
+				TRUE
+			);
+		}
+		// Add all JavaScript files defined in $this->jsFiles to the PageRenderer
+		foreach ($this->jsFiles as $file) {
+			$this->pageRenderer->addJsFile($GLOBALS['BACK_PATH'] . $file);
+		}
+		if ((int)$GLOBALS['TYPO3_CONF_VARS']['BE']['debug'] === 1) {
+			$this->pageRenderer->enableDebugMode();
+		}
+	}
+
 	/**
 	 * Gets instance of PageRenderer configured with the current language, file references and debug settings
 	 *
 	 * @return PageRenderer
-	 * @deprecated since TYPO3 CMS 7, will be removed in TYPO3 CMS 8. This method will become protected then.
+	 * @deprecated since TYPO3 CMS 7, will be removed in TYPO3 CMS 8.
 	 */
 	public function getPageRenderer() {
-		if (!isset($this->pageRenderer)) {
-			$this->pageRenderer = GeneralUtility::makeInstance(PageRenderer::class);
-			$this->pageRenderer->setLanguage($GLOBALS['LANG']->lang);
-			$this->pageRenderer->enableConcatenateFiles();
-			$this->pageRenderer->enableCompressCss();
-			$this->pageRenderer->enableCompressJavascript();
-			// Add all JavaScript files defined in $this->jsFiles to the PageRenderer
-			foreach ($this->jsFilesNoConcatenation as $file) {
-				$this->pageRenderer->addJsFile(
-					$GLOBALS['BACK_PATH'] . $file,
-					'text/javascript',
-					TRUE,
-					FALSE,
-					'',
-					TRUE
-				);
-			}
-			// Add all JavaScript files defined in $this->jsFiles to the PageRenderer
-			foreach ($this->jsFiles as $file) {
-				$this->pageRenderer->addJsFile($GLOBALS['BACK_PATH'] . $file);
-			}
-		}
-		if ((int)$GLOBALS['TYPO3_CONF_VARS']['BE']['debug'] === 1) {
-			$this->pageRenderer->enableDebugMode();
-		}
+		GeneralUtility::logDeprecatedFunction();
+		$this->initPageRenderer();
+
 		return $this->pageRenderer;
 	}
 
diff --git a/typo3/sysext/core/Documentation/Changelog/master/Deprecation-68074-DeprecateGetPageRenderer.rst b/typo3/sysext/core/Documentation/Changelog/master/Deprecation-68074-DeprecateGetPageRenderer.rst
index b215cd34995342e533a3e6b93e5b81d43a48cf0e..ba3bfbfd209f7a2688879d2cfe7ebcf5a9bd07c3 100644
--- a/typo3/sysext/core/Documentation/Changelog/master/Deprecation-68074-DeprecateGetPageRenderer.rst
+++ b/typo3/sysext/core/Documentation/Changelog/master/Deprecation-68074-DeprecateGetPageRenderer.rst
@@ -16,9 +16,7 @@ The following public functions have been marked for deprecation as the instance
 Impact
 ======
 
-Using ``BackendController::getPageRenderer`` or ``FrontendDocumentTemplate::getPageRenderer`` will throw a deprecation message.
-The public functions ``DocumentTemplate::getPageRenderer`` and ``TypoScriptFrontendController::getPageRenderer`` will become
-protected methods with TYPO3 CMS 8. As those functions have to be used within the classes themselves no deprecation message can be thrown.
+Using one of these functions will throw a deprecation message.
 
 
 Migration
diff --git a/typo3/sysext/extensionmanager/Classes/ViewHelpers/Be/TriggerViewHelper.php b/typo3/sysext/extensionmanager/Classes/ViewHelpers/Be/TriggerViewHelper.php
index ec06c9d4370e27ba86f9440cf53d12a33dd650ea..803810c012acbdecd5e3191bc71c01319478325d 100644
--- a/typo3/sysext/extensionmanager/Classes/ViewHelpers/Be/TriggerViewHelper.php
+++ b/typo3/sysext/extensionmanager/Classes/ViewHelpers/Be/TriggerViewHelper.php
@@ -55,11 +55,4 @@ class TriggerViewHelper extends \TYPO3\CMS\Fluid\ViewHelpers\Be\AbstractBackendV
 		return '';
 	}
 
-	/**
-	 * @return PageRenderer
-	 */
-	protected function getPageRenderer() {
-		return $this->objectManager->get(PageRenderer::class);
-	}
-
 }
diff --git a/typo3/sysext/frontend/Classes/Controller/TypoScriptFrontendController.php b/typo3/sysext/frontend/Classes/Controller/TypoScriptFrontendController.php
index dfbca23d3a4b42d079a858b05034b710f1ccea19..0c1f3ab125796b763128a24890125bbd04633514 100644
--- a/typo3/sysext/frontend/Classes/Controller/TypoScriptFrontendController.php
+++ b/typo3/sysext/frontend/Classes/Controller/TypoScriptFrontendController.php
@@ -798,7 +798,7 @@ class TypoScriptFrontendController {
 	/**
 	 * @var PageRenderer
 	 */
-	protected $pageRenderer;
+	protected $pageRenderer = NULL;
 
 	/**
 	 * The page cache object, use this to save pages to the cache and to
@@ -890,6 +890,7 @@ class TypoScriptFrontendController {
 		$this->clientInfo = GeneralUtility::clientInfo();
 		$this->uniqueString = md5(microtime());
 		$this->csConvObj = GeneralUtility::makeInstance(CharsetConverter::class);
+		$this->initPageRenderer();
 		// Call post processing function for constructor:
 		if (is_array($this->TYPO3_CONF_VARS['SC_OPTIONS']['tslib/class.tslib_fe.php']['tslib_fe-PostProc'])) {
 			$_params = array('pObj' => &$this);
@@ -901,6 +902,18 @@ class TypoScriptFrontendController {
 		$this->initCaches();
 	}
 
+	/**
+	 * Initializes the page renderer object
+	 */
+	protected function initPageRenderer() {
+		if ($this->pageRenderer !== NULL) {
+			return;
+		}
+		$this->pageRenderer = GeneralUtility::makeInstance(PageRenderer::class);
+		$this->pageRenderer->setTemplateFile('EXT:frontend/Resources/Private/Templates/MainPage.html');
+		$this->pageRenderer->setBackPath(TYPO3_mainDir);
+	}
+
 	/**
 	 * @param string $contentType
 	 * @internal Should only be used by TYPO3 core for now
@@ -978,14 +991,12 @@ class TypoScriptFrontendController {
 	 * Gets instance of PageRenderer
 	 *
 	 * @return PageRenderer
-	 * @deprecated since TYPO3 CMS 7, will be removed in TYPO3 CMS 8. This method will become protected then.
+	 * @deprecated since TYPO3 CMS 7, will be removed in TYPO3 CMS 8.
 	 */
 	public function getPageRenderer() {
-		if (!isset($this->pageRenderer)) {
-			$this->pageRenderer = GeneralUtility::makeInstance(PageRenderer::class);
-			$this->pageRenderer->setTemplateFile('EXT:frontend/Resources/Private/Templates/MainPage.html');
-			$this->pageRenderer->setBackPath(TYPO3_mainDir);
-		}
+		GeneralUtility::logDeprecatedFunction();
+		$this->initPageRenderer();
+
 		return $this->pageRenderer;
 	}
 
@@ -2529,7 +2540,7 @@ class TypoScriptFrontendController {
 					if ($this->pSetup['pageHeaderFooterTemplateFile']) {
 						$file = $this->tmpl->getFileName($this->pSetup['pageHeaderFooterTemplateFile']);
 						if ($file) {
-							$this->getPageRenderer()->setTemplateFile($file);
+							$this->pageRenderer->setTemplateFile($file);
 						}
 					}
 				}
@@ -3387,7 +3398,9 @@ class TypoScriptFrontendController {
 		$this->additionalJavaScript = $this->config['INTincScript_ext']['additionalJavaScript'];
 		$this->additionalCSS = $this->config['INTincScript_ext']['additionalCSS'];
 		$this->divSection = '';
-		if (!empty($this->config['INTincScript_ext']['pageRenderer'])) {
+		if (empty($this->config['INTincScript_ext']['pageRenderer'])) {
+			$this->initPageRenderer();
+		} else {
 			/** @var PageRenderer $pageRenderer */
 			$pageRenderer = unserialize($this->config['INTincScript_ext']['pageRenderer']);
 			$this->pageRenderer = $pageRenderer;
@@ -3410,7 +3423,7 @@ class TypoScriptFrontendController {
 				$this->convOutputCharset(implode(LF, $this->additionalFooterData), 'FD'),
 				$this->convOutputCharset($this->divSection, 'TDS'),
 			),
-			$this->getPageRenderer()->renderJavaScriptAndCssForProcessingOfUncachedContentObjects($this->content, $this->config['INTincScript_ext']['divKey'])
+			$this->pageRenderer->renderJavaScriptAndCssForProcessingOfUncachedContentObjects($this->content, $this->config['INTincScript_ext']['divKey'])
 		);
 		// Replace again, because header and footer data and page renderer replacements may introduce additional placeholders (see #44825)
 		$this->recursivelyReplaceIntPlaceholdersInContent();
@@ -4464,7 +4477,7 @@ class TypoScriptFrontendController {
 		$this->languageDependencies = array();
 		// Setting language key and split index:
 		$this->lang = $this->config['config']['language'] ?: 'default';
-		$this->getPageRenderer()->setLanguage($this->lang);
+		$this->pageRenderer->setLanguage($this->lang);
 
 		// Finding the requested language in this list based
 		// on the $lang key being inputted to this function.