diff --git a/typo3/sysext/backend/Classes/Backend/ToolbarItems/ClearCacheToolbarItem.php b/typo3/sysext/backend/Classes/Backend/ToolbarItems/ClearCacheToolbarItem.php
index 658a1c6ee9a1ed66fe90bc05d8706f41350357ec..314629767c54778a546d45dcf5c8114b21ab55ca 100644
--- a/typo3/sysext/backend/Classes/Backend/ToolbarItems/ClearCacheToolbarItem.php
+++ b/typo3/sysext/backend/Classes/Backend/ToolbarItems/ClearCacheToolbarItem.php
@@ -14,11 +14,12 @@ namespace TYPO3\CMS\Backend\Backend\ToolbarItems;
  * The TYPO3 project - inspiring people to share!
  */
 
+use TYPO3\CMS\Backend\Toolbar\ToolbarItemInterface;
+use TYPO3\CMS\Backend\Toolbar\ClearCacheActionsHookInterface;
 use TYPO3\CMS\Backend\Utility\BackendUtility;
 use TYPO3\CMS\Backend\Utility\IconUtility;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
-use TYPO3\CMS\Backend\Toolbar\ToolbarItemInterface;
-use TYPO3\CMS\Backend\Toolbar\ClearCacheActionsHookInterface;
+use TYPO3\CMS\Core\Page\PageRenderer;
 
 /**
  * Render cache clearing toolbar item
@@ -189,12 +190,10 @@ class ClearCacheToolbarItem implements ToolbarItemInterface {
 	/**
 	 * Returns current PageRenderer
 	 *
-	 * @return \TYPO3\CMS\Core\Page\PageRenderer
+	 * @return PageRenderer
 	 */
 	protected function getPageRenderer() {
-		/** @var  \TYPO3\CMS\Backend\Template\DocumentTemplate $documentTemplate */
-		$documentTemplate = $GLOBALS['TBE_TEMPLATE'];
-		return $documentTemplate->getPageRenderer();
+		return GeneralUtility::makeInstance(PageRenderer::class);
 	}
 
 	/**
diff --git a/typo3/sysext/backend/Classes/Backend/ToolbarItems/LiveSearchToolbarItem.php b/typo3/sysext/backend/Classes/Backend/ToolbarItems/LiveSearchToolbarItem.php
index 1d9efd210b55f36188f955461f1dbc8dcaf8bad4..c9d9f4bd8dd1d09de4b80a99cdcc0c66c594360a 100644
--- a/typo3/sysext/backend/Classes/Backend/ToolbarItems/LiveSearchToolbarItem.php
+++ b/typo3/sysext/backend/Classes/Backend/ToolbarItems/LiveSearchToolbarItem.php
@@ -16,6 +16,7 @@ namespace TYPO3\CMS\Backend\Backend\ToolbarItems;
 
 use TYPO3\CMS\Backend\Toolbar\ToolbarItemInterface;
 use TYPO3\CMS\Backend\Module\ModuleLoader;
+use TYPO3\CMS\Core\Page\PageRenderer;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 
 /**
@@ -105,12 +106,10 @@ class LiveSearchToolbarItem implements ToolbarItemInterface {
 	/**
 	 * Returns current PageRenderer
 	 *
-	 * @return \TYPO3\CMS\Core\Page\PageRenderer
+	 * @return PageRenderer
 	 */
 	protected function getPageRenderer() {
-		/** @var  \TYPO3\CMS\Backend\Template\DocumentTemplate $documentTemplate */
-		$documentTemplate = $GLOBALS['TBE_TEMPLATE'];
-		return $documentTemplate->getPageRenderer();
+		return GeneralUtility::makeInstance(PageRenderer::class);
 	}
 
 }
diff --git a/typo3/sysext/backend/Classes/Backend/ToolbarItems/ShortcutToolbarItem.php b/typo3/sysext/backend/Classes/Backend/ToolbarItems/ShortcutToolbarItem.php
index 63c5149ca74d9c9b88423ae84b983dfd89b8b317..fd893d75043e839a75c274e59b1644a101b70fff 100644
--- a/typo3/sysext/backend/Classes/Backend/ToolbarItems/ShortcutToolbarItem.php
+++ b/typo3/sysext/backend/Classes/Backend/ToolbarItems/ShortcutToolbarItem.php
@@ -14,13 +14,14 @@ namespace TYPO3\CMS\Backend\Backend\ToolbarItems;
  * The TYPO3 project - inspiring people to share!
  */
 
+use TYPO3\CMS\Backend\Module\ModuleLoader;
+use TYPO3\CMS\Backend\Toolbar\ToolbarItemInterface;
 use TYPO3\CMS\Backend\Utility\BackendUtility;
 use TYPO3\CMS\Backend\Utility\IconUtility;
+use TYPO3\CMS\Core\Http\AjaxRequestHandler;
+use TYPO3\CMS\Core\Page\PageRenderer;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\CMS\Core\Utility\MathUtility;
-use TYPO3\CMS\Backend\Toolbar\ToolbarItemInterface;
-use TYPO3\CMS\Backend\Module\ModuleLoader;
-use TYPO3\CMS\Core\Http\AjaxRequestHandler;
 use TYPO3\CMS\Core\Utility\PathUtility;
 
 /**
@@ -759,12 +760,10 @@ class ShortcutToolbarItem implements ToolbarItemInterface {
 	/**
 	 * Returns current PageRenderer
 	 *
-	 * @return \TYPO3\CMS\Core\Page\PageRenderer
+	 * @return PageRenderer
 	 */
 	protected function getPageRenderer() {
-		/** @var  \TYPO3\CMS\Backend\Template\DocumentTemplate $documentTemplate */
-		$documentTemplate = $GLOBALS['TBE_TEMPLATE'];
-		return $documentTemplate->getPageRenderer();
+		return GeneralUtility::makeInstance(PageRenderer::class);
 	}
 
 	/**
diff --git a/typo3/sysext/backend/Classes/Backend/ToolbarItems/SystemInformationToolbarItem.php b/typo3/sysext/backend/Classes/Backend/ToolbarItems/SystemInformationToolbarItem.php
index 0e631b49e24e6b0d99ce2d964f4c5d5b0a3a2cab..c5a8d06e33349fa614a679e5b050796967d7b9db 100644
--- a/typo3/sysext/backend/Classes/Backend/ToolbarItems/SystemInformationToolbarItem.php
+++ b/typo3/sysext/backend/Classes/Backend/ToolbarItems/SystemInformationToolbarItem.php
@@ -19,6 +19,7 @@ use TYPO3\CMS\Backend\Toolbar\Enumeration\InformationStatus;
 use TYPO3\CMS\Backend\Utility\BackendUtility;
 use TYPO3\CMS\Backend\Utility\IconUtility;
 use TYPO3\CMS\Core\Http\AjaxRequestHandler;
+use \TYPO3\CMS\Core\Page\PageRenderer;
 use TYPO3\CMS\Core\Utility\CommandUtility;
 use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
@@ -89,8 +90,7 @@ class SystemInformationToolbarItem implements ToolbarItemInterface {
 		$this->standaloneView = GeneralUtility::makeInstance(StandaloneView::class);
 		$this->standaloneView->setTemplatePathAndFilename($extPath . 'Resources/Private/Templates/ToolbarMenu/' . static::TOOLBAR_MENU_TEMPLATE);
 
-		$pageRenderer = $this->getPageRenderer();
-		$pageRenderer->loadRequireJsModule('TYPO3/CMS/Backend/Toolbar/SystemInformationMenu');
+		$this->getPageRenderer()->loadRequireJsModule('TYPO3/CMS/Backend/Toolbar/SystemInformationMenu');
 	}
 
 	/**
@@ -350,12 +350,10 @@ class SystemInformationToolbarItem implements ToolbarItemInterface {
 	/**
 	 * Returns current PageRenderer
 	 *
-	 * @return \TYPO3\CMS\Core\Page\PageRenderer
+	 * @return PageRenderer
 	 */
 	protected function getPageRenderer() {
-		/** @var \TYPO3\CMS\Backend\Template\DocumentTemplate $documentTemplate */
-		$documentTemplate = $GLOBALS['TBE_TEMPLATE'];
-		return $documentTemplate->getPageRenderer();
+		return GeneralUtility::makeInstance(PageRenderer::class);
 	}
 
 	/**
diff --git a/typo3/sysext/backend/Classes/Controller/BackendController.php b/typo3/sysext/backend/Classes/Controller/BackendController.php
index 4823fe40dcb62368a1655d5a8f432428214365ff..f2eeb7daf9a28e87dab10fa525df177c33c24f14 100644
--- a/typo3/sysext/backend/Classes/Controller/BackendController.php
+++ b/typo3/sysext/backend/Classes/Controller/BackendController.php
@@ -14,12 +14,13 @@ namespace TYPO3\CMS\Backend\Controller;
  * The TYPO3 project - inspiring people to share!
  */
 
-use TYPO3\CMS\Backend\Utility\BackendUtility;
-use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
-use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\CMS\Backend\Domain\Repository\Module\BackendModuleRepository;
 use TYPO3\CMS\Backend\Module\ModuleLoader;
 use TYPO3\CMS\Backend\Toolbar\ToolbarItemInterface;
+use TYPO3\CMS\Backend\Utility\BackendUtility;
+use TYPO3\CMS\Core\Page\PageRenderer;
+use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
+use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\CMS\Core\Utility\MathUtility;
 use TYPO3\CMS\Fluid\View\StandaloneView;
 use TYPO3\CMS\Rsaauth\RsaEncryptionEncoder;
@@ -87,14 +88,16 @@ class BackendController {
 	protected $moduleLoader;
 
 	/**
-	 * @var \TYPO3\CMS\Core\Page\PageRenderer
+	 * @var PageRenderer
 	 */
 	protected $pageRenderer;
 
 	/**
-	 * @return \TYPO3\CMS\Core\Page\PageRenderer
+	 * @return PageRenderer
+	 * @deprecated since TYPO3 CMS 7, will be removed in TYPO3 CMS 8
 	 */
 	public function getPageRenderer() {
+		GeneralUtility::logDeprecatedFunction();
 		return $this->pageRenderer;
 	}
 
@@ -109,7 +112,7 @@ class BackendController {
 		// Initializes the backend modules structure for use later.
 		$this->moduleLoader = GeneralUtility::makeInstance(ModuleLoader::class);
 		$this->moduleLoader->load($GLOBALS['TBE_MODULES']);
-		$this->pageRenderer = $this->getDocumentTemplate()->getPageRenderer();
+		$this->pageRenderer = GeneralUtility::makeInstance(PageRenderer::class);
 		$this->pageRenderer->loadExtJS();
 		// included for the module menu JavaScript, please note that this is subject to change
 		$this->pageRenderer->loadJquery();
diff --git a/typo3/sysext/backend/Classes/Controller/BackendLayoutWizardController.php b/typo3/sysext/backend/Classes/Controller/BackendLayoutWizardController.php
index adf47b3034434669c963619443a52a50851bdba8..274a4b227a478ed044d771363da53ded84952df7 100644
--- a/typo3/sysext/backend/Classes/Controller/BackendLayoutWizardController.php
+++ b/typo3/sysext/backend/Classes/Controller/BackendLayoutWizardController.php
@@ -14,12 +14,13 @@ namespace TYPO3\CMS\Backend\Controller;
  * The TYPO3 project - inspiring people to share!
  */
 
+use TYPO3\CMS\Backend\Template\DocumentTemplate;
+use TYPO3\CMS\Backend\Utility\BackendUtility;
 use TYPO3\CMS\Backend\Utility\IconUtility;
+use TYPO3\CMS\Core\Page\PageRenderer;
+use TYPO3\CMS\Core\TypoScript\Parser\TypoScriptParser;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
-use TYPO3\CMS\Core\TypoScript\Parser\TypoScriptParser;
-use TYPO3\CMS\Backend\Template\DocumentTemplate;
-use TYPO3\CMS\Backend\Utility\BackendUtility;
 
 
 /**
@@ -81,7 +82,7 @@ class BackendLayoutWizardController {
 		// Initialize document object:
 		$this->doc = GeneralUtility::makeInstance(DocumentTemplate::class);
 		$this->doc->backPath = $GLOBALS['BACK_PATH'];
-		$pageRenderer = $this->doc->getPageRenderer();
+		$pageRenderer = GeneralUtility::makeInstance(PageRenderer::class);
 		$pageRenderer->loadExtJS();
 		$pageRenderer->addJsFile(ExtensionManagementUtility::extRelPath('backend') . 'Resources/Public/JavaScript/grideditor.js');
 		$pageRenderer->addInlineSetting('ContextHelp', 'moduleUrl', BackendUtility::getModuleUrl('help_cshmanual'));
diff --git a/typo3/sysext/backend/Classes/Controller/EditDocumentController.php b/typo3/sysext/backend/Classes/Controller/EditDocumentController.php
index ac0f7bef6dc68198fd3b688d11e1949425361f0b..1d8686e6338792ad340bfc4b35491477b71dcafc 100644
--- a/typo3/sysext/backend/Classes/Controller/EditDocumentController.php
+++ b/typo3/sysext/backend/Classes/Controller/EditDocumentController.php
@@ -14,22 +14,23 @@ namespace TYPO3\CMS\Backend\Controller;
  * The TYPO3 project - inspiring people to share!
  */
 
+use TYPO3\CMS\Backend\Form\DataPreprocessor;
 use TYPO3\CMS\Backend\Form\FormEngine;
+use TYPO3\CMS\Backend\Form\Utility\FormEngineUtility;
 use TYPO3\CMS\Backend\Utility\BackendUtility;
 use TYPO3\CMS\Backend\Utility\IconUtility;
+use TYPO3\CMS\Core\DataHandling\DataHandler;
 use TYPO3\CMS\Core\Html\HtmlParser;
+use TYPO3\CMS\Core\Messaging\FlashMessage;
+use TYPO3\CMS\Core\Messaging\FlashMessageService;
+use TYPO3\CMS\Core\Page\PageRenderer;
 use TYPO3\CMS\Core\Type\Bitmask\JsConfirmation;
 use TYPO3\CMS\Core\Type\Bitmask\Permission;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\CMS\Core\Utility\HttpUtility;
 use TYPO3\CMS\Core\Utility\MathUtility;
-use TYPO3\CMS\Frontend\Page\PageRepository;
-use TYPO3\CMS\Backend\Form\Utility\FormEngineUtility;
 use TYPO3\CMS\Extbase\SignalSlot\Dispatcher;
-use TYPO3\CMS\Core\DataHandling\DataHandler;
-use TYPO3\CMS\Backend\Form\DataPreprocessor;
-use TYPO3\CMS\Core\Messaging\FlashMessage;
-use TYPO3\CMS\Core\Messaging\FlashMessageService;
+use TYPO3\CMS\Frontend\Page\PageRepository;
 
 /**
  * Script Class: Drawing the editing form for editing records in TYPO3.
@@ -679,11 +680,12 @@ class EditDocumentController {
 		$this->MCONF['name'] = 'xMOD_alt_doc.php';
 		// Create an instance of the document template object
 		$this->doc = $GLOBALS['TBE_TEMPLATE'];
-		$this->doc->getPageRenderer()->addInlineLanguageLabelFile('EXT:lang/locallang_alt_doc.xlf');
+		$pageRenderer = GeneralUtility::makeInstance(PageRenderer::class);
+		$pageRenderer->addInlineLanguageLabelFile('EXT:lang/locallang_alt_doc.xlf');
+		$pageRenderer->loadPrototype();
 		$this->doc->backPath = $GLOBALS['BACK_PATH'];
 		$this->doc->setModuleTemplate('EXT:backend/Resources/Private/Templates/alt_doc.html');
 		$this->doc->form = '<form action="' . htmlspecialchars($this->R_URI) . '" method="post" enctype="' . $GLOBALS['TYPO3_CONF_VARS']['SYS']['form_enctype'] . '" name="editform" onsubmit="document.editform._scrollPosition.value=(document.documentElement.scrollTop || document.body.scrollTop); return TBE_EDITOR.checkSubmit(1);">';
-		$this->doc->getPageRenderer()->loadPrototype();
 		// override the default jumpToUrl
 		$this->doc->JScodeArray['jumpToUrl'] = '
 			function jumpToUrl(URL,formEl) {
diff --git a/typo3/sysext/backend/Classes/Controller/LoginController.php b/typo3/sysext/backend/Classes/Controller/LoginController.php
index ee522e9a21d42fa7a5f24d46bfcee3a31529bf50..7bee52655e63d70f81b1273248412b09ac14a76f 100644
--- a/typo3/sysext/backend/Classes/Controller/LoginController.php
+++ b/typo3/sysext/backend/Classes/Controller/LoginController.php
@@ -20,6 +20,7 @@ use TYPO3\CMS\Backend\Utility\BackendUtility;
 use TYPO3\CMS\Core\Authentication\BackendUserAuthentication;
 use TYPO3\CMS\Core\FormProtection\BackendFormProtection;
 use TYPO3\CMS\Core\FormProtection\FormProtectionFactory;
+use TYPO3\CMS\Core\Page\PageRenderer;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\CMS\Core\Utility\HttpUtility;
 use TYPO3\CMS\Core\Utility\PathUtility;
@@ -144,8 +145,8 @@ class LoginController implements \TYPO3\CMS\Core\Http\ControllerInterface {
 	 * @return string The content to output
 	 */
 	public function main() {
-		/** @var $pageRenderer \TYPO3\CMS\Core\Page\PageRenderer */
-		$pageRenderer = $this->getDocumentTemplate()->getPageRenderer();
+		/** @var $pageRenderer PageRenderer */
+		$pageRenderer = GeneralUtility::makeInstance(PageRenderer::class);
 		$pageRenderer->loadRequireJsModule('TYPO3/CMS/Backend/Login');
 
 		// support placeholders for IE9 and lower
diff --git a/typo3/sysext/backend/Classes/Controller/LoginFramesetController.php b/typo3/sysext/backend/Classes/Controller/LoginFramesetController.php
index 2442f1a04e61b0005029708db2cad18aced16b55..84cab9a83b186a624084d460fc598dfaea855c69 100644
--- a/typo3/sysext/backend/Classes/Controller/LoginFramesetController.php
+++ b/typo3/sysext/backend/Classes/Controller/LoginFramesetController.php
@@ -16,6 +16,7 @@ namespace TYPO3\CMS\Backend\Controller;
 
 use TYPO3\CMS\Backend\Utility\BackendUtility;
 use TYPO3\CMS\Core\Page\PageRenderer;
+use TYPO3\CMS\Core\Utility\GeneralUtility;
 
 /**
  * Script Class, putting the frameset together.
@@ -40,7 +41,7 @@ class LoginFramesetController {
 		$this->getDocumentTemplate()->startPage($title);
 
 		// Create the frameset for the window
-		$this->content = $this->getDocumentTemplate()->getPageRenderer()->render(PageRenderer::PART_HEADER) . '
+		$this->content = $this->getPageRenderer()->render(PageRenderer::PART_HEADER) . '
 			<frameset rows="*,1">
 				<frame name="login" src="index.php?loginRefresh=1" marginwidth="0" marginheight="0" scrolling="no" noresize="noresize" />
 				<frame name="dummy" src="' . htmlspecialchars(BackendUtility::getModuleUrl('dummy')) . '" marginwidth="0" marginheight="0" scrolling="auto" noresize="noresize" />
@@ -66,4 +67,11 @@ class LoginFramesetController {
 		return $GLOBALS['TBE_TEMPLATE'];
 	}
 
+	/**
+	 * @return PageRenderer
+	 */
+	protected function getPageRenderer() {
+		return GeneralUtility::makeInstance(PageRenderer::class);
+	}
+
 }
diff --git a/typo3/sysext/backend/Classes/Controller/PageTreeNavigationController.php b/typo3/sysext/backend/Classes/Controller/PageTreeNavigationController.php
index 19fb6e02a97d01ebaa0c7b10dc8b6d2179930d0d..b3655c9d45013ecd739d46eb15993f077a087294 100644
--- a/typo3/sysext/backend/Classes/Controller/PageTreeNavigationController.php
+++ b/typo3/sysext/backend/Classes/Controller/PageTreeNavigationController.php
@@ -14,15 +14,16 @@ namespace TYPO3\CMS\Backend\Controller;
  * The TYPO3 project - inspiring people to share!
  */
 
+use TYPO3\CMS\Backend\Template\DocumentTemplate;
 use TYPO3\CMS\Backend\Utility\BackendUtility;
 use TYPO3\CMS\Backend\Utility\IconUtility;
-use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\CMS\Backend\View\PageTreeView;
-use TYPO3\CMS\Backend\Template\DocumentTemplate;
 use TYPO3\CMS\Core\Messaging\FlashMessage;
+use TYPO3\CMS\Core\Page\PageRenderer;
 use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
-use TYPO3\CMS\Workspaces\Service\WorkspaceService;
+use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\CMS\Core\Utility\MathUtility;
+use TYPO3\CMS\Workspaces\Service\WorkspaceService;
 
 /**
  * Main script class for the page tree navigation frame
@@ -156,8 +157,8 @@ class PageTreeNavigationController {
 		// Adding javascript code for drag&drop and the pagetree as well as the click menu code
 		$this->doc->getDragDropCode('pages', $dragDropCode);
 		$this->doc->getContextMenuCode();
-		/** @var $pageRenderer \TYPO3\CMS\Core\Page\PageRenderer */
-		$pageRenderer = $this->doc->getPageRenderer();
+		/** @var $pageRenderer PageRenderer */
+		$pageRenderer = GeneralUtility::makeInstance(PageRenderer::class);
 		$pageRenderer->loadExtJS();
 		$this->doc->JScode .= $this->doc->wrapScriptTags(($this->currentSubScript ? 'top.currentSubScript=unescape("' . rawurlencode($this->currentSubScript) . '");' : '') . '
 		// Function, loading the list frame from navigation tree:
diff --git a/typo3/sysext/backend/Classes/Controller/Wizard/ColorpickerController.php b/typo3/sysext/backend/Classes/Controller/Wizard/ColorpickerController.php
index 152677515e3f151ef89ae7babdeba2edd8509456..b5dd2f18f339f70a23ad309cecfff2b4ebd71e91 100644
--- a/typo3/sysext/backend/Classes/Controller/Wizard/ColorpickerController.php
+++ b/typo3/sysext/backend/Classes/Controller/Wizard/ColorpickerController.php
@@ -16,6 +16,7 @@ namespace TYPO3\CMS\Backend\Controller\Wizard;
 
 use TYPO3\CMS\Backend\Template\DocumentTemplate;
 use TYPO3\CMS\Backend\Utility\BackendUtility;
+use TYPO3\CMS\Core\Page\PageRenderer;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 
 /**
@@ -293,7 +294,7 @@ class ColorpickerController extends AbstractWizardController {
 				'fieldChangeFuncHash' => $this->P['fieldChangeFuncHash'],
 			)
 		);
-		$this->content = $this->getDocumentTemplate()->getPageRenderer()->render(\TYPO3\CMS\Core\Page\PageRenderer::PART_HEADER) . '
+		$this->content = $this->getPageRenderer()->render(PageRenderer::PART_HEADER) . '
 			<frameset rows="*,1" framespacing="0" frameborder="0" border="0">
 				<frame name="content" src="' . htmlspecialchars($url) . '" marginwidth="0" marginheight="0" frameborder="0" scrolling="auto" noresize="noresize" />
 				<frame name="menu" src="' . htmlspecialchars(BackendUtility::getModuleUrl('dummy')) . '" marginwidth="0" marginheight="0" frameborder="0" scrolling="no" noresize="noresize" />
@@ -434,4 +435,11 @@ class ColorpickerController extends AbstractWizardController {
 		return $this->fieldChangeFunc && $this->fieldChangeFuncHash && $this->fieldChangeFuncHash === GeneralUtility::hmac($this->fieldChangeFunc);
 	}
 
+	/**
+	 * @return PageRenderer
+	 */
+	protected function getPageRenderer() {
+		return GeneralUtility::makeInstance(PageRenderer::class);
+	}
+
 }
diff --git a/typo3/sysext/backend/Classes/Form/Element/ImageManipulationElement.php b/typo3/sysext/backend/Classes/Form/Element/ImageManipulationElement.php
index 3b6511e71d767d4e828f40d18ab03da221297808..9ae3e671faf835aa610c989fbc3ba4e4c6e45e84 100644
--- a/typo3/sysext/backend/Classes/Form/Element/ImageManipulationElement.php
+++ b/typo3/sysext/backend/Classes/Form/Element/ImageManipulationElement.php
@@ -14,15 +14,15 @@ namespace TYPO3\CMS\Backend\Form\Element;
  * The TYPO3 project - inspiring people to share!
  */
 
-use TYPO3\CMS\Backend\Form\FormEngine;
+use TYPO3\CMS\Backend\Form\NodeFactory;
 use TYPO3\CMS\Backend\Utility\BackendUtility;
+use TYPO3\CMS\Core\Page\PageRenderer;
 use TYPO3\CMS\Core\Resource\Exception\FileDoesNotExistException;
 use TYPO3\CMS\Core\Resource\File;
 use TYPO3\CMS\Core\Resource\ResourceFactory;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\CMS\Core\Utility\MathUtility;
 use TYPO3\CMS\Extbase\Utility\ArrayUtility;
-use TYPO3\CMS\Backend\Form\NodeFactory;
 
 /**
  * Generation of image manipulation TCEform element
@@ -133,8 +133,8 @@ class ImageManipulationElement extends AbstractFormElement {
 
 			$content .= $this->getImageManipulationInfoTable($parameterArray['itemFormElValue']);
 
-			/** @var $pageRenderer \TYPO3\CMS\Core\Page\PageRenderer */
-			$pageRenderer = $GLOBALS['SOBE']->doc->getPageRenderer();
+			/** @var $pageRenderer PageRenderer */
+			$pageRenderer = GeneralUtility::makeInstance(PageRenderer::class);
 			$pageRenderer->loadRequireJsModule(
 				'TYPO3/CMS/Backend/ImageManipulation',
 				'function(ImageManipulation){ImageManipulation.initializeTrigger()}' // Initialize after load
diff --git a/typo3/sysext/backend/Classes/Form/Element/SelectTreeElement.php b/typo3/sysext/backend/Classes/Form/Element/SelectTreeElement.php
index b00c90755307da91bc81e617524a0bc908615ac4..9c081f84b226771ef37b37bb58cd12d783080b17 100644
--- a/typo3/sysext/backend/Classes/Form/Element/SelectTreeElement.php
+++ b/typo3/sysext/backend/Classes/Form/Element/SelectTreeElement.php
@@ -14,18 +14,18 @@ namespace TYPO3\CMS\Backend\Form\Element;
  * The TYPO3 project - inspiring people to share!
  */
 
-use TYPO3\CMS\Core\Utility\GeneralUtility;
-use TYPO3\CMS\Backend\Utility\BackendUtility;
-use TYPO3\CMS\Core\Utility\MathUtility;
 use TYPO3\CMS\Backend\Form\Utility\FormEngineUtility;
-use TYPO3\CMS\Lang\LanguageService;
+use TYPO3\CMS\Backend\Utility\BackendUtility;
+use TYPO3\CMS\Backend\Utility\IconUtility;
 use TYPO3\CMS\Core\Authentication\BackendUserAuthentication;
+use TYPO3\CMS\Core\Page\PageRenderer;
 use TYPO3\CMS\Core\Tree\TableConfiguration\ExtJsArrayTreeRenderer;
 use TYPO3\CMS\Core\Tree\TableConfiguration\TableConfigurationTree;
 use TYPO3\CMS\Core\Tree\TableConfiguration\TreeDataProviderFactory;
 use TYPO3\CMS\Core\Type\Bitmask\JsConfirmation;
 use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
-use TYPO3\CMS\Backend\Utility\IconUtility;
+use TYPO3\CMS\Core\Utility\GeneralUtility;
+use TYPO3\CMS\Lang\LanguageService;
 
 /**
  * Render data as a tree.
@@ -167,8 +167,8 @@ class SelectTreeElement extends AbstractFormElement {
 				$onChange .= 'if (TBE_EDITOR.checkSubmit(-1)){ TBE_EDITOR.submitForm() };';
 			}
 		}
-		/** @var $pageRenderer \TYPO3\CMS\Core\Page\PageRenderer */
-		$pageRenderer = $GLOBALS['SOBE']->doc->getPageRenderer();
+		/** @var $pageRenderer PageRenderer */
+		$pageRenderer = GeneralUtility::makeInstance(PageRenderer::class);
 		$pageRenderer->loadExtJs();
 		$pageRenderer->addJsFile('sysext/backend/Resources/Public/JavaScript/tree.js');
 		$pageRenderer->addInlineLanguageLabelFile(ExtensionManagementUtility::extPath('lang') . 'locallang_csh_corebe.xlf', 'tcatree');
diff --git a/typo3/sysext/backend/Classes/Form/FormEngine.php b/typo3/sysext/backend/Classes/Form/FormEngine.php
index 84ed66148ef91a08f2bae7268e9b9417f8641d4d..7fc64f08a0a28e9cbc9e553f95caae4e05b1615d 100644
--- a/typo3/sysext/backend/Classes/Form/FormEngine.php
+++ b/typo3/sysext/backend/Classes/Form/FormEngine.php
@@ -22,15 +22,12 @@ use TYPO3\CMS\Core\Authentication\BackendUserAuthentication;
 use TYPO3\CMS\Core\FormProtection\FormProtectionFactory;
 use TYPO3\CMS\Core\Html\HtmlParser;
 use TYPO3\CMS\Core\Http\AjaxRequestHandler;
+use TYPO3\CMS\Core\Page\PageRenderer;
+use TYPO3\CMS\Core\Utility\ArrayUtility;
 use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\CMS\Core\Utility\MathUtility;
 use TYPO3\CMS\Lang\LanguageService;
-use TYPO3\CMS\Backend\Form\Container\FullRecordContainer;
-use TYPO3\CMS\Backend\Form\Container\SoloFieldContainer;
-use TYPO3\CMS\Backend\Form\Container\InlineRecordContainer;
-use TYPO3\CMS\Backend\Form\Container\ListOfFieldsContainer;
-use TYPO3\CMS\Core\Utility\ArrayUtility;
 
 /**
  * This is form engine - Class for creating the backend editing forms.
@@ -213,6 +210,11 @@ class FormEngine {
 	 */
 	protected $requireJsModules = array();
 
+	/**
+	 * @var PageRenderer
+	 */
+	protected $pageRenderer = NULL;
+
 	/**
 	 * Constructor function, setting internal variables, loading the styles used.
 	 *
@@ -1055,8 +1057,8 @@ class FormEngine {
 	 * @todo: aaaargs ...
 	 */
 	protected function getJavaScriptOfPageRenderer() {
-		/** @var $pageRenderer \TYPO3\CMS\Core\Page\PageRenderer */
-		$pageRenderer = clone $GLOBALS['SOBE']->doc->getPageRenderer();
+		/** @var $pageRenderer PageRenderer */
+		$pageRenderer = clone $this->getPageRenderer();
 		$pageRenderer->setCharSet($this->getLanguageService()->charSet);
 		$pageRenderer->setTemplateFile('EXT:backend/Resources/Private/Templates/helper_javascript_css.html');
 		return $pageRenderer->render();
@@ -1220,7 +1222,6 @@ class FormEngine {
 			if ($this->loadMD5_JS) {
 				$this->loadJavascriptLib('sysext/backend/Resources/Public/JavaScript/md5.js');
 			}
-			$pageRenderer = $this->getPageRenderer();
 			// load the main module for FormEngine with all important JS functions
 			$this->requireJsModules['TYPO3/CMS/Backend/FormEngine'] = 'function(FormEngine) {
 				FormEngine.setBrowserUrl(' . GeneralUtility::quoteJSvalue(BackendUtility::getModuleUrl('browser')) . ');
@@ -1235,26 +1236,26 @@ class FormEngine {
 					$callbacks = array($callbacks);
 				}
 				foreach ($callbacks as $callback) {
-					$pageRenderer->loadRequireJsModule($moduleName, $callback);
+					$this->getPageRenderer()->loadRequireJsModule($moduleName, $callback);
 				}
 			}
-			$pageRenderer->loadPrototype();
-			$pageRenderer->loadJquery();
-			$pageRenderer->loadExtJS();
+			$this->getPageRenderer()->loadPrototype();
+			$this->getPageRenderer()->loadJquery();
+			$this->getPageRenderer()->loadExtJS();
 			// rtehtmlarea needs extjs quick tips (?)
-			$pageRenderer->enableExtJSQuickTips();
+			$this->getPageRenderer()->enableExtJSQuickTips();
 			$beUserAuth = $this->getBackendUserAuthentication();
 			// Make textareas resizable and flexible ("autogrow" in height)
 			$textareaSettings = array(
 				'autosize'  => (bool)$beUserAuth->uc['resizeTextareas_Flexible']
 			);
-			$pageRenderer->addInlineSettingArray('Textarea', $textareaSettings);
+			$this->getPageRenderer()->addInlineSettingArray('Textarea', $textareaSettings);
 
 			$this->loadJavascriptLib('sysext/backend/Resources/Public/JavaScript/jsfunc.tbe_editor.js');
-			$pageRenderer->loadRequireJsModule('TYPO3/CMS/Backend/ValueSlider');
+			$this->getPageRenderer()->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'));
-			$pageRenderer->addInlineSetting('DateTimePicker', 'DateFormat', $dateFormat);
+			$this->getPageRenderer()->addInlineSetting('DateTimePicker', 'DateFormat', $dateFormat);
 
 			// support placeholders for IE9 and lower
 			$clientInfo = GeneralUtility::clientInfo();
@@ -1263,13 +1264,13 @@ class FormEngine {
 			}
 
 			// @todo: remove scriptaclous once suggest & flex form foo is moved to RequireJS, see #55575
-			$pageRenderer->loadScriptaculous();
+			$this->getPageRenderer()->loadScriptaculous();
 			$this->loadJavascriptLib('sysext/backend/Resources/Public/JavaScript/jsfunc.tceforms_suggest.js');
 
-			$pageRenderer->loadRequireJsModule('TYPO3/CMS/Filelist/FileListLocalisation');
-			$pageRenderer->loadRequireJsModule('TYPO3/CMS/Backend/DragUploader');
+			$this->getPageRenderer()->loadRequireJsModule('TYPO3/CMS/Filelist/FileListLocalisation');
+			$this->getPageRenderer()->loadRequireJsModule('TYPO3/CMS/Backend/DragUploader');
 
-			$pageRenderer->addInlineLanguagelabelFile(
+			$this->getPageRenderer()->addInlineLanguagelabelFile(
 				\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath('lang') . 'locallang_core.xlf',
 				'file_upload'
 			);
@@ -1327,15 +1328,12 @@ class FormEngine {
 	 * @return string
 	 */
 	public function printNeededJSFunctions() {
-		/** @var $pageRenderer \TYPO3\CMS\Core\Page\PageRenderer */
-		$pageRenderer = $this->getControllerDocumentTemplate()->getPageRenderer();
-
 		// set variables to be accessible for JS
-		$pageRenderer->addInlineSetting('FormEngine', 'formName', 'editform');
-		$pageRenderer->addInlineSetting('FormEngine', 'backPath', '');
+		$this->getPageRenderer()->addInlineSetting('FormEngine', 'formName', 'editform');
+		$this->getPageRenderer()->addInlineSetting('FormEngine', 'backPath', '');
 
 		// Integrate JS functions for the element browser if such fields or IRRE fields were processed
-		$pageRenderer->addInlineSetting('FormEngine', 'legacyFieldChangedCb', 'function() { ' . $this->TBE_EDITOR_fieldChanged_func . ' };');
+		$this->getPageRenderer()->addInlineSetting('FormEngine', 'legacyFieldChangedCb', 'function() { ' . $this->TBE_EDITOR_fieldChanged_func . ' };');
 
 		return $this->JSbottom('editform');
 	}
@@ -1467,7 +1465,11 @@ class FormEngine {
 	 * @return \TYPO3\CMS\Core\Page\PageRenderer
 	 */
 	protected function getPageRenderer() {
-		return $this->getControllerDocumentTemplate()->getPageRenderer();
+		if ($this->pageRenderer === NULL) {
+			$this->pageRenderer = GeneralUtility::makeInstance(PageRenderer::class);
+		}
+
+		return $this->pageRenderer;
 	}
 
 }
diff --git a/typo3/sysext/backend/Classes/Module/AbstractFunctionModule.php b/typo3/sysext/backend/Classes/Module/AbstractFunctionModule.php
index b85bbe4bae2f58f51d075d22ea20e62ad3084fa8..baf2419fe913762c7fe7f29b9b5afc5c94867669 100644
--- a/typo3/sysext/backend/Classes/Module/AbstractFunctionModule.php
+++ b/typo3/sysext/backend/Classes/Module/AbstractFunctionModule.php
@@ -18,6 +18,7 @@ use TYPO3\CMS\Backend\Template\DocumentTemplate;
 use TYPO3\CMS\Backend\Utility\BackendUtility;
 use TYPO3\CMS\Core\Authentication\BackendUserAuthentication;
 use TYPO3\CMS\Core\Database\DatabaseConnection;
+use TYPO3\CMS\Core\Page\PageRenderer;
 use TYPO3\CMS\Core\Utility\ArrayUtility;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\CMS\Lang\LanguageService;
@@ -156,6 +157,11 @@ abstract class AbstractFunctionModule {
 	 */
 	public $function_key = '';
 
+	/**
+	 * @var PageRenderer
+	 */
+	protected $pageRenderer = NULL;
+
 	/**
 	 * Initialize the object
 	 *
@@ -287,4 +293,15 @@ abstract class AbstractFunctionModule {
 		return $GLOBALS['TYPO3_DB'];
 	}
 
+	/**
+	 * @return PageRenderer
+	 */
+	protected function getPageRenderer() {
+		if ($this->pageRenderer === NULL) {
+			$this->pageRenderer = GeneralUtility::makeInstance(PageRenderer::class);
+		}
+
+		return $this->pageRenderer;
+	}
+
 }
diff --git a/typo3/sysext/backend/Classes/Module/BaseScriptClass.php b/typo3/sysext/backend/Classes/Module/BaseScriptClass.php
index ae85902723e9a6b41dc184bb1f28cf6dc158bebf..a188c19c0483f29bf11d603dd57c20487b982489 100644
--- a/typo3/sysext/backend/Classes/Module/BaseScriptClass.php
+++ b/typo3/sysext/backend/Classes/Module/BaseScriptClass.php
@@ -18,6 +18,7 @@ use TYPO3\CMS\Backend\Utility\BackendUtility;
 use TYPO3\CMS\Core\Authentication\BackendUserAuthentication;
 use TYPO3\CMS\Core\Database\DatabaseConnection;
 use TYPO3\CMS\Core\Messaging\FlashMessage;
+use TYPO3\CMS\Core\Page\PageRenderer;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\CMS\Lang\LanguageService;
 
@@ -189,6 +190,11 @@ class BaseScriptClass {
 	 */
 	public $extObj;
 
+	/**
+	 * @var PageRenderer
+	 */
+	protected $pageRenderer = NULL;
+
 	/**
 	 * Initializes the backend module by setting internal variables, initializing the menu.
 	 *
@@ -365,4 +371,15 @@ class BaseScriptClass {
 		return $GLOBALS['TYPO3_DB'];
 	}
 
+	/**
+	 * @return PageRenderer
+	 */
+	protected function getPageRenderer() {
+		if ($this->pageRenderer === NULL) {
+			$this->pageRenderer = GeneralUtility::makeInstance(PageRenderer::class);
+		}
+
+		return $this->pageRenderer;
+	}
+
 }
diff --git a/typo3/sysext/backend/Classes/Template/DocumentTemplate.php b/typo3/sysext/backend/Classes/Template/DocumentTemplate.php
index bb943bd9e7326ca25fa56b1c5411ae8503f534fa..1858b961259ef321069da177c4f2e3b0a747f389 100644
--- a/typo3/sysext/backend/Classes/Template/DocumentTemplate.php
+++ b/typo3/sysext/backend/Classes/Template/DocumentTemplate.php
@@ -352,7 +352,7 @@ function jumpToUrl(URL) {
 	public $hasDocheader = TRUE;
 
 	/**
-	 * @var \TYPO3\CMS\Core\Page\PageRenderer
+	 * @var PageRenderer
 	 */
 	protected $pageRenderer;
 
@@ -436,11 +436,12 @@ function jumpToUrl(URL) {
 	/**
 	 * Gets instance of PageRenderer configured with the current language, file references and debug settings
 	 *
-	 * @return \TYPO3\CMS\Core\Page\PageRenderer
+	 * @return PageRenderer
+	 * @deprecated since TYPO3 CMS 7, will be removed in TYPO3 CMS 8. This method will become protected then.
 	 */
 	public function getPageRenderer() {
 		if (!isset($this->pageRenderer)) {
-			$this->pageRenderer = GeneralUtility::makeInstance(\TYPO3\CMS\Core\Page\PageRenderer::class);
+			$this->pageRenderer = GeneralUtility::makeInstance(PageRenderer::class);
 			$this->pageRenderer->setLanguage($GLOBALS['LANG']->lang);
 			$this->pageRenderer->enableConcatenateFiles();
 			$this->pageRenderer->enableCompressCss();
@@ -1579,7 +1580,7 @@ function jumpToUrl(URL) {
 	 * @return string
 	 */
 	public function getDynamicTabMenu(array $menuItems, $identString, $defaultTabIndex = 1, $collapseable = FALSE, $wrapContent = TRUE, $storeLastActiveTab = TRUE) {
-		$this->getPageRenderer()->loadRequireJsModule('TYPO3/CMS/Backend/Tabs');
+		$this->pageRenderer->loadRequireJsModule('TYPO3/CMS/Backend/Tabs');
 		$templatePathAndFileName = 'EXT:backend/Resources/Private/Templates/DocumentTemplate/' . ($collapseable ? 'Collapse.html' : 'Tabs.html');
 		$view = GeneralUtility::makeInstance(StandaloneView::class);
 		$view->setTemplatePathAndFilename(GeneralUtility::getFileAbsFileName($templatePathAndFileName));
diff --git a/typo3/sysext/backend/Classes/Template/FrontendDocumentTemplate.php b/typo3/sysext/backend/Classes/Template/FrontendDocumentTemplate.php
index f5ad348c28672991e7f4040871ec3ed22378adb0..5a7ed5ab315112ab9cc7884d4bd566168d593318 100644
--- a/typo3/sysext/backend/Classes/Template/FrontendDocumentTemplate.php
+++ b/typo3/sysext/backend/Classes/Template/FrontendDocumentTemplate.php
@@ -14,6 +14,9 @@ namespace TYPO3\CMS\Backend\Template;
  * The TYPO3 project - inspiring people to share!
  */
 
+use TYPO3\CMS\Core\Page\PageRenderer;
+use TYPO3\CMS\Core\Utility\GeneralUtility;
+
 /**
  * Extension class for "template" - used in the context of frontend editing.
  */
@@ -22,11 +25,13 @@ class FrontendDocumentTemplate extends DocumentTemplate {
 	/**
 	 * Gets instance of PageRenderer
 	 *
-	 * @return \TYPO3\CMS\Core\Page\PageRenderer
+	 * @return PageRenderer
+	 * @deprecated since TYPO3 CMS 7, will be removed in TYPO3 CMS 8
 	 */
 	public function getPageRenderer() {
+		GeneralUtility::logDeprecatedFunction();
 		if (!isset($this->pageRenderer)) {
-			$this->pageRenderer = $GLOBALS['TSFE']->getPageRenderer();
+			$this->pageRenderer = GeneralUtility::makeInstance(PageRenderer::class);
 		}
 		return $this->pageRenderer;
 	}
diff --git a/typo3/sysext/backend/Classes/View/PageLayoutView.php b/typo3/sysext/backend/Classes/View/PageLayoutView.php
index 930eb162cec8ec0c9f05c2dff932f1207a03c38b..69f30f78b431ec75b0b6949a380dd92cf270fd11 100644
--- a/typo3/sysext/backend/Classes/View/PageLayoutView.php
+++ b/typo3/sysext/backend/Classes/View/PageLayoutView.php
@@ -20,6 +20,7 @@ use TYPO3\CMS\Backend\Utility\IconUtility;
 use TYPO3\CMS\Core\Authentication\BackendUserAuthentication;
 use TYPO3\CMS\Core\Database\DatabaseConnection;
 use TYPO3\CMS\Core\Messaging\FlashMessage;
+use TYPO3\CMS\Core\Page\PageRenderer;
 use TYPO3\CMS\Core\Type\Bitmask\Permission;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\CMS\Core\Versioning\VersionState;
@@ -374,8 +375,8 @@ class PageLayoutView extends \TYPO3\CMS\Recordlist\RecordList\AbstractDatabaseRe
 		$this->initializeLanguages();
 		$this->initializeClipboard();
 		$pageTitleParamForAltDoc = '&recTitle=' . rawurlencode(BackendUtility::getRecordTitle('pages', BackendUtility::getRecordWSOL('pages', $id), TRUE));
-		/** @var $pageRenderer \TYPO3\CMS\Core\Page\PageRenderer */
-		$pageRenderer = $this->getPageLayoutController()->doc->getPageRenderer();
+		/** @var $pageRenderer PageRenderer */
+		$pageRenderer = GeneralUtility::makeInstance(PageRenderer::class);
 		$pageRenderer->loadRequireJsModule('TYPO3/CMS/Backend/LayoutModule/DragDrop');
 		$userCanEditPage = $this->ext_CALC_PERMS & Permission::PAGE_EDIT && !empty($this->id);
 		if ($this->tt_contentConfig['languageColsPointer'] > 0) {
diff --git a/typo3/sysext/belog/Classes/Controller/AbstractController.php b/typo3/sysext/belog/Classes/Controller/AbstractController.php
index 82eae430cee7dde2f6b26f6934c93cb2d89c300b..92bd7982f1b53145d5a78ada0659baa301c52ddf 100644
--- a/typo3/sysext/belog/Classes/Controller/AbstractController.php
+++ b/typo3/sysext/belog/Classes/Controller/AbstractController.php
@@ -14,6 +14,8 @@ namespace TYPO3\CMS\Belog\Controller;
  * The TYPO3 project - inspiring people to share!
  */
 
+use TYPO3\CMS\Core\Page\PageRenderer;
+
 /**
  * Abstract class to show log entries from sys_log
  *
@@ -77,7 +79,7 @@ abstract class AbstractController extends \TYPO3\CMS\Extbase\Mvc\Controller\Acti
 	protected $logEntryRepository = NULL;
 
 	/**
-	 * @var \TYPO3\CMS\Core\Page\PageRenderer
+	 * @var PageRenderer
 	 */
 	protected $pageRenderer;
 
@@ -86,7 +88,7 @@ abstract class AbstractController extends \TYPO3\CMS\Extbase\Mvc\Controller\Acti
 	 * @return void
 	 */
 	public function initializeAction() {
-		$this->pageRenderer = $this->objectManager->get(\TYPO3\CMS\Core\Page\PageRenderer::class);
+		$this->pageRenderer = $this->objectManager->get(PageRenderer::class);
 		$this->pageRenderer->loadRequireJsModule('TYPO3/CMS/Backend/DateTimePicker');
 	}
 
diff --git a/typo3/sysext/core/Documentation/Changelog/master/Deprecation-68074-DeprecateGetPageRenderer.rst b/typo3/sysext/core/Documentation/Changelog/master/Deprecation-68074-DeprecateGetPageRenderer.rst
new file mode 100644
index 0000000000000000000000000000000000000000..b215cd34995342e533a3e6b93e5b81d43a48cf0e
--- /dev/null
+++ b/typo3/sysext/core/Documentation/Changelog/master/Deprecation-68074-DeprecateGetPageRenderer.rst
@@ -0,0 +1,28 @@
+=========================================================
+Deprecation: #68074 - Deprecate getPageRenderer() methods
+=========================================================
+
+Description
+===========
+
+The following public functions have been marked for deprecation as the instance they return is a singleton:
+
+* TYPO3\CMS\Backend\Controller\BackendController::getPageRenderer()
+* TYPO3\CMS\Backend\Template\DocumentTemplate::getPageRenderer()
+* TYPO3\CMS\Backend\Template\FrontendDocumentTemplate::getPageRenderer()
+* TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController::getPageRenderer()
+
+
+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.
+
+
+Migration
+=========
+
+As the PageRenderer implements a SingletonInterface you can get your own (shared) instance with
+\TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Core\Page\PageRenderer::class) and work with that one.
diff --git a/typo3/sysext/extbase/Classes/Mvc/Web/Response.php b/typo3/sysext/extbase/Classes/Mvc/Web/Response.php
index 0ba317cd1abd37379ccf134a99935c255f58f811..48406f3c22e79b7508c48c17caad3d553189a61c 100644
--- a/typo3/sysext/extbase/Classes/Mvc/Web/Response.php
+++ b/typo3/sysext/extbase/Classes/Mvc/Web/Response.php
@@ -14,8 +14,8 @@ namespace TYPO3\CMS\Extbase\Mvc\Web;
  * The TYPO3 project - inspiring people to share!
  */
 
-use TYPO3\CMS\Backend\Template\DocumentTemplate;
 use TYPO3\CMS\Core\Page\PageRenderer;
+use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController;
 
 /**
@@ -238,15 +238,8 @@ class Response extends \TYPO3\CMS\Extbase\Mvc\Response {
 		}
 		if ($this->request->isCached()) {
 			/** @var PageRenderer $pageRenderer */
-			$pageRenderer = NULL;
-			if ($this->environmentService->isEnvironmentInFrontendMode()) {
-				$pageRenderer = $this->getTypoScriptFrontendController()->getPageRenderer();
-			} elseif ($this->environmentService->isEnvironmentInBackendMode()) {
-				$pageRenderer = $this->getDocumentTemplate()->getPageRenderer();
-			}
-			if ($pageRenderer !== NULL) {
-				$pageRenderer->addHeaderData($additionalHeaderData);
-			}
+			$pageRenderer = GeneralUtility::makeInstance(PageRenderer::class);
+			$pageRenderer->addHeaderData($additionalHeaderData);
 		} else {
 			$this->additionalHeaderData[] = $additionalHeaderData;
 		}
@@ -296,11 +289,4 @@ class Response extends \TYPO3\CMS\Extbase\Mvc\Response {
 		return $GLOBALS['TSFE'];
 	}
 
-	/**
-	 * @return DocumentTemplate
-	 */
-	protected function getDocumentTemplate() {
-		return $GLOBALS['TBE_TEMPLATE'];
-	}
-
 }
\ No newline at end of file
diff --git a/typo3/sysext/extensionmanager/Classes/ViewHelpers/Be/TriggerViewHelper.php b/typo3/sysext/extensionmanager/Classes/ViewHelpers/Be/TriggerViewHelper.php
index 145e502772db89bb459461635b968bde5cedc7f7..ec06c9d4370e27ba86f9440cf53d12a33dd650ea 100644
--- a/typo3/sysext/extensionmanager/Classes/ViewHelpers/Be/TriggerViewHelper.php
+++ b/typo3/sysext/extensionmanager/Classes/ViewHelpers/Be/TriggerViewHelper.php
@@ -14,6 +14,7 @@ namespace TYPO3\CMS\Extensionmanager\ViewHelpers\Be;
  * The TYPO3 project - inspiring people to share!
  */
 
+use TYPO3\CMS\Core\Page\PageRenderer;
 use TYPO3\CMS\Extensionmanager\Controller\AbstractController;
 
 /**
@@ -43,8 +44,7 @@ class TriggerViewHelper extends \TYPO3\CMS\Fluid\ViewHelpers\Be\AbstractBackendV
 	 * @see \TYPO3\CMS\Core\Page\PageRenderer
 	 */
 	public function render($triggers = array()) {
-		$doc = $this->getDocInstance();
-		$pageRenderer = $doc->getPageRenderer();
+		$pageRenderer = $this->getPageRenderer();
 		// Handle triggers
 		if (!empty($triggers[AbstractController::TRIGGER_RefreshModuleMenu])) {
 			$pageRenderer->addJsInlineCode(
@@ -55,4 +55,11 @@ 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/filelist/Classes/Controller/FileListController.php b/typo3/sysext/filelist/Classes/Controller/FileListController.php
index c7bace2243117738cb09d503ddfc7ccd8020e5e3..56ceaa05624b8b14273605a3f73c9eed62c1405c 100644
--- a/typo3/sysext/filelist/Classes/Controller/FileListController.php
+++ b/typo3/sysext/filelist/Classes/Controller/FileListController.php
@@ -18,6 +18,7 @@ use TYPO3\CMS\Backend\Template\DocumentTemplate;
 use TYPO3\CMS\Backend\Utility\BackendUtility;
 use TYPO3\CMS\Backend\Utility\IconUtility;
 use TYPO3\CMS\Core\Messaging\FlashMessage;
+use TYPO3\CMS\Core\Page\PageRenderer;
 use TYPO3\CMS\Core\Resource\Exception;
 use TYPO3\CMS\Core\Resource\ResourceFactory;
 use TYPO3\CMS\Core\Resource\Utility\ListUtility;
@@ -269,8 +270,7 @@ class FileListController {
 		$this->doc->backPath = $GLOBALS['BACK_PATH'];
 		$this->doc->setModuleTemplate('EXT:filelist/Resources/Private/Templates/file_list.html');
 
-		/** @var $pageRenderer \TYPO3\CMS\Core\Page\PageRenderer */
-		$pageRenderer = $this->doc->getPageRenderer();
+		$pageRenderer = $this->getPageRenderer();
 		$pageRenderer->loadJQuery();
 		$pageRenderer->loadRequireJsModule('TYPO3/CMS/Filelist/FileListLocalisation');
 
@@ -540,4 +540,11 @@ class FileListController {
 		return $GLOBALS['BE_USER'];
 	}
 
+	/**
+	 * @return PageRenderer
+	 */
+	protected function getPageRenderer() {
+		return GeneralUtility::makeInstance(PageRenderer::class);
+	}
+
 }
diff --git a/typo3/sysext/fluid/Classes/ViewHelpers/Be/AbstractBackendViewHelper.php b/typo3/sysext/fluid/Classes/ViewHelpers/Be/AbstractBackendViewHelper.php
index 6fba7efce2bee7b1637f128a8838b3d1e8a4847d..ced5645ea1aeffe593a6bb2343e989741ae10757 100644
--- a/typo3/sysext/fluid/Classes/ViewHelpers/Be/AbstractBackendViewHelper.php
+++ b/typo3/sysext/fluid/Classes/ViewHelpers/Be/AbstractBackendViewHelper.php
@@ -22,6 +22,7 @@ namespace TYPO3\CMS\Fluid\ViewHelpers\Be;
  *                                                                        */
 
 use TYPO3\CMS\Backend\Template\DocumentTemplate;
+use TYPO3\CMS\Core\Page\PageRenderer;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\CMS\Fluid\Core\ViewHelper\AbstractViewHelper;
 
@@ -50,4 +51,21 @@ abstract class AbstractBackendViewHelper extends AbstractViewHelper {
 		return $doc;
 	}
 
+	/**
+	 * Gets instance of PageRenderer if exists or create a new one.
+	 * Saves instance in viewHelperVariableContainer
+	 *
+	 * @return PageRenderer
+	 */
+	public function getPageRenderer() {
+		if ($this->viewHelperVariableContainer->exists(AbstractBackendViewHelper::class, 'PageRenderer')) {
+			$pageRenderer = $this->viewHelperVariableContainer->get(AbstractBackendViewHelper::class, 'PageRenderer');
+		} else {
+			/** @var $doc DocumentTemplate */
+			$pageRenderer = GeneralUtility::makeInstance(PageRenderer::class);
+			$this->viewHelperVariableContainer->add(AbstractBackendViewHelper::class, 'PageRenderer', $pageRenderer);
+		}
+
+		return $pageRenderer;
+	}
 }
diff --git a/typo3/sysext/fluid/Classes/ViewHelpers/Be/ContainerViewHelper.php b/typo3/sysext/fluid/Classes/ViewHelpers/Be/ContainerViewHelper.php
index 2079e9e3d8cdf2ae8ffe6a419b536c123d39c322..bd550badc0e12ac6fd26b41be34c9e81c7216603 100644
--- a/typo3/sysext/fluid/Classes/ViewHelpers/Be/ContainerViewHelper.php
+++ b/typo3/sysext/fluid/Classes/ViewHelpers/Be/ContainerViewHelper.php
@@ -71,8 +71,8 @@ class ContainerViewHelper extends AbstractBackendViewHelper {
 	 * @see \TYPO3\CMS\Core\Page\PageRenderer
 	 */
 	public function render($pageTitle = '', $enableClickMenu = TRUE, $loadPrototype = TRUE, $loadScriptaculous = FALSE, $scriptaculousModule = '', $loadExtJs = FALSE, $loadExtJsTheme = TRUE, $enableExtJsDebug = FALSE, $loadJQuery = FALSE, $includeCssFiles = NULL, $includeJsFiles = NULL, $addJsInlineLabels = NULL, $includeCsh = TRUE, $includeRequireJsModules = NULL) {
+		$pageRenderer = $this->getPageRenderer();
 		$doc = $this->getDocInstance();
-		$pageRenderer = $doc->getPageRenderer();
 		$doc->JScode .= $doc->wrapScriptTags($doc->redirectUrls());
 
 		// Load various standard libraries
diff --git a/typo3/sysext/form/Classes/View/Wizard/WizardView.php b/typo3/sysext/form/Classes/View/Wizard/WizardView.php
index 2b66204277069b3c7f57e0a4fe5d75d9926fdc19..8a3e7e1a85a919da782de02aba5820533817d06d 100644
--- a/typo3/sysext/form/Classes/View/Wizard/WizardView.php
+++ b/typo3/sysext/form/Classes/View/Wizard/WizardView.php
@@ -16,6 +16,7 @@ namespace TYPO3\CMS\Form\View\Wizard;
 
 use TYPO3\CMS\Backend\Utility\BackendUtility;
 use TYPO3\CMS\Core\Messaging\FlashMessage;
+use TYPO3\CMS\Core\Page\PageRenderer;
 use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 
@@ -36,7 +37,7 @@ class WizardView extends \TYPO3\CMS\Form\View\Wizard\AbstractWizardView {
 	public $doc;
 
 	/**
-	 * @var \TYPO3\CMS\Core\Page\PageRenderer
+	 * @var PageRenderer
 	 */
 	protected $pageRenderer;
 
@@ -59,10 +60,9 @@ class WizardView extends \TYPO3\CMS\Form\View\Wizard\AbstractWizardView {
 		$this->doc = GeneralUtility::makeInstance(\TYPO3\CMS\Backend\Template\DocumentTemplate::class);
 		$this->doc->backPath = $GLOBALS['BACK_PATH'];
 		$this->doc->setModuleTemplate('EXT:form/Resources/Private/Templates/Wizard.html');
-		$this->pageRenderer = $this->doc->getPageRenderer();
-		$this->pageRenderer->enableConcatenateFiles();
-		$this->pageRenderer->enableCompressCss();
-		$this->pageRenderer->enableCompressJavascript();
+		$this->getPageRenderer()->enableConcatenateFiles();
+		$this->getPageRenderer()->enableCompressCss();
+		$this->getPageRenderer()->enableCompressJavascript();
 	}
 
 	/**
@@ -355,4 +355,15 @@ class WizardView extends \TYPO3\CMS\Form\View\Wizard\AbstractWizardView {
 		return $bodyContent;
 	}
 
+	/**
+	 * @return PageRenderer
+	 */
+	protected function getPageRenderer() {
+		if (!isset($this->pageRenderer)) {
+			$this->pageRenderer = GeneralUtility::makeInstance(PageRenderer::class);
+		}
+
+		return $this->pageRenderer;
+	}
+
 }
diff --git a/typo3/sysext/frontend/Classes/ContentObject/AbstractContentObject.php b/typo3/sysext/frontend/Classes/ContentObject/AbstractContentObject.php
index c21bb84aee7c7d8f3c3ef01a8f94a4504426a7d2..bbb1fbc3f30ed399d463aa442940736c8008080f 100644
--- a/typo3/sysext/frontend/Classes/ContentObject/AbstractContentObject.php
+++ b/typo3/sysext/frontend/Classes/ContentObject/AbstractContentObject.php
@@ -14,6 +14,9 @@ namespace TYPO3\CMS\Frontend\ContentObject;
  * The TYPO3 project - inspiring people to share!
  */
 
+use TYPO3\CMS\Core\Page\PageRenderer;
+use TYPO3\CMS\Core\Utility\GeneralUtility;
+
 /**
  * Contains an abstract class for all tslib content class implementations.
  *
@@ -27,6 +30,11 @@ abstract class AbstractContentObject {
 	 */
 	protected $cObj;
 
+	/**
+	 * @var PageRenderer
+	 */
+	protected $pageRenderer = NULL;
+
 	/**
 	 * Default constructor.
 	 *
@@ -53,4 +61,15 @@ abstract class AbstractContentObject {
 		return $this->cObj;
 	}
 
+	/**
+	 * @return PageRenderer
+	 */
+	protected function getPageRenderer() {
+		if ($this->pageRenderer === NULL) {
+			$this->pageRenderer = GeneralUtility::makeInstance(PageRenderer::class);
+		}
+
+		return $this->pageRenderer;
+	}
+
 }
diff --git a/typo3/sysext/frontend/Classes/Controller/TypoScriptFrontendController.php b/typo3/sysext/frontend/Classes/Controller/TypoScriptFrontendController.php
index f7ca37bbc5287c53a62f80a01266986647b84b2a..dfbca23d3a4b42d079a858b05034b710f1ccea19 100644
--- a/typo3/sysext/frontend/Classes/Controller/TypoScriptFrontendController.php
+++ b/typo3/sysext/frontend/Classes/Controller/TypoScriptFrontendController.php
@@ -978,6 +978,7 @@ 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.
 	 */
 	public function getPageRenderer() {
 		if (!isset($this->pageRenderer)) {
diff --git a/typo3/sysext/frontend/Classes/Page/PageGenerator.php b/typo3/sysext/frontend/Classes/Page/PageGenerator.php
index 7ccb46bdb716fa43ac6edf60295229b2c4978d71..05f6351e7cb1ca1278a30aa261b0a74169a14f11 100644
--- a/typo3/sysext/frontend/Classes/Page/PageGenerator.php
+++ b/typo3/sysext/frontend/Classes/Page/PageGenerator.php
@@ -157,12 +157,12 @@ class PageGenerator {
 					$tsfe->xhtmlVersion = 200;
 					break;
 				default:
-					$tsfe->getPageRenderer()->setRenderXhtml(FALSE);
+					static::getPageRenderer()->setRenderXhtml(FALSE);
 					$tsfe->xhtmlDoctype = '';
 					$tsfe->xhtmlVersion = 0;
 			}
 		} else {
-			$tsfe->getPageRenderer()->setRenderXhtml(FALSE);
+			static::getPageRenderer()->setRenderXhtml(FALSE);
 		}
 	}
 
@@ -236,7 +236,7 @@ class PageGenerator {
 		/** @var TimeTracker $timeTracker */
 		$timeTracker = $GLOBALS['TT'];
 
-		$pageRenderer = $tsfe->getPageRenderer();
+		$pageRenderer = static::getPageRenderer();
 		if ($tsfe->config['config']['moveJsFromHeaderToFooter']) {
 			$pageRenderer->enableMoveJsFromHeaderToFooter();
 		}
@@ -1125,7 +1125,7 @@ class PageGenerator {
 			$titleTagContent = $tsfe->cObj->stdWrap($titleTagContent, $tsfe->config['config']['pageTitle.']);
 		}
 		if ($titleTagContent !== '' && (int)$tsfe->config['config']['noPageTitle'] !== self::NO_PAGE_TITLE) {
-			$tsfe->getPageRenderer()->setTitle($titleTagContent);
+			static::getPageRenderer()->setTitle($titleTagContent);
 		}
 	}
 
@@ -1202,4 +1202,11 @@ class PageGenerator {
 			$tsfe->sWordRegEx = rtrim($tsfe->sWordRegEx, '|');
 		}
 	}
+
+	/**
+	 * @return PageRenderer
+	 */
+	static protected function getPageRenderer() {
+		return GeneralUtility::makeInstance(PageRenderer::class);
+	}
 }
diff --git a/typo3/sysext/impexp/Classes/Hook/BackendControllerHook.php b/typo3/sysext/impexp/Classes/Hook/BackendControllerHook.php
index a0cde946669d8550439448656e665a4e07a8bad7..c2f57a74aa953d9fbc4d48860b5d526ed280d3c9 100644
--- a/typo3/sysext/impexp/Classes/Hook/BackendControllerHook.php
+++ b/typo3/sysext/impexp/Classes/Hook/BackendControllerHook.php
@@ -15,6 +15,8 @@ namespace TYPO3\CMS\Impexp\Hook;
  */
 
 use TYPO3\CMS\Backend\Utility\BackendUtility;
+use TYPO3\CMS\Core\Page\PageRenderer;
+use TYPO3\CMS\Core\Utility\GeneralUtility;
 
 /**
  * This class adds import export related JavaScript to the backend
@@ -28,7 +30,14 @@ class BackendControllerHook {
 	 * @return void
 	 */
 	public function addJavaScript(array $configuration, \TYPO3\CMS\Backend\Controller\BackendController $backendController) {
-		$backendController->getPageRenderer()->addInlineSetting('ImportExport', 'moduleUrl', BackendUtility::getModuleUrl('xMOD_tximpexp'));
+		$this->getPageRenderer()->addInlineSetting('ImportExport', 'moduleUrl', BackendUtility::getModuleUrl('xMOD_tximpexp'));
+	}
+
+	/**
+	 * @return PageRenderer
+	 */
+	protected function getPageRenderer() {
+		return GeneralUtility::makeInstance(PageRenderer::class);
 	}
 
 }
diff --git a/typo3/sysext/install/Classes/ViewHelpers/Be/ContainerViewHelper.php b/typo3/sysext/install/Classes/ViewHelpers/Be/ContainerViewHelper.php
index f51f372793241b7396b03887e01583d13d159b3d..685f406820ac1b5ca829227037e014d1d72bc305 100644
--- a/typo3/sysext/install/Classes/ViewHelpers/Be/ContainerViewHelper.php
+++ b/typo3/sysext/install/Classes/ViewHelpers/Be/ContainerViewHelper.php
@@ -62,7 +62,7 @@ class ContainerViewHelper extends \TYPO3\CMS\Fluid\ViewHelpers\Be\AbstractBacken
 	 */
 	public function render($pageTitle = '', $enableClickMenu = TRUE, $loadPrototype = TRUE, $loadScriptaculous = FALSE, $scriptaculousModule = '', $loadExtJs = FALSE, $loadExtJsTheme = TRUE, $enableExtJsDebug = FALSE, $addCssFiles = array(), $addJsFiles = array(), $triggers = array()) {
 		$doc = $this->getDocInstance();
-		$pageRenderer = $doc->getPageRenderer();
+		$pageRenderer = $this->getPageRenderer();
 
 		$doc->JScode .= $doc->wrapScriptTags($doc->redirectUrls());
 		if ($enableClickMenu) {
diff --git a/typo3/sysext/linkvalidator/Classes/Report/LinkValidatorReport.php b/typo3/sysext/linkvalidator/Classes/Report/LinkValidatorReport.php
index befada87e1f05f7e6d75ab8bb830cda0b9616cff..65e6eef0fb5232fd9eda77ab81bf0cab0134b952 100644
--- a/typo3/sysext/linkvalidator/Classes/Report/LinkValidatorReport.php
+++ b/typo3/sysext/linkvalidator/Classes/Report/LinkValidatorReport.php
@@ -168,7 +168,7 @@ class LinkValidatorReport extends \TYPO3\CMS\Backend\Module\AbstractFunctionModu
 		$this->initialize();
 
 		// Localization
-		$this->doc->getPageRenderer()->addInlineLanguageLabelFile(
+		$this->getPageRenderer()->addInlineLanguageLabelFile(
 			ExtensionManagementUtility::extPath('linkvalidator', 'Resources/Private/Language/Module/locallang.xlf')
 		);
 
@@ -238,8 +238,8 @@ class LinkValidatorReport extends \TYPO3\CMS\Backend\Module\AbstractFunctionModu
 		}
 
 		$this->doc->addStyleSheet('module', 'sysext/linkvalidator/Resources/Public/Styles/styles.css');
-		$this->doc->getPageRenderer()->loadJquery();
-		$this->doc->getPageRenderer()->loadRequireJsModule('TYPO3/CMS/Linkvalidator/Linkvalidator');
+		$this->getPageRenderer()->loadJquery();
+		$this->getPageRenderer()->loadRequireJsModule('TYPO3/CMS/Linkvalidator/Linkvalidator');
 
 		// Don't access in workspace
 		if ($this->getBackendUser()->workspace !== 0) {
diff --git a/typo3/sysext/lowlevel/Classes/View/DatabaseIntegrityView.php b/typo3/sysext/lowlevel/Classes/View/DatabaseIntegrityView.php
index 6342ecf9206c057db5529082da67fdc97fafea98..d60a954d557c9a5288aba55e7f78bf843368ab08 100644
--- a/typo3/sysext/lowlevel/Classes/View/DatabaseIntegrityView.php
+++ b/typo3/sysext/lowlevel/Classes/View/DatabaseIntegrityView.php
@@ -306,7 +306,7 @@ class DatabaseIntegrityView extends BaseScriptClass {
 		$this->view->assign('searchMode', $searchMode);
 		switch ($searchMode) {
 			case 'query':
-				$this->doc->getPageRenderer()->loadRequireJsModule('TYPO3/CMS/Core/QueryGenerator');
+				$this->getPageRenderer()->loadRequireJsModule('TYPO3/CMS/Core/QueryGenerator');
 				$this->view->assign('queryMaker', $fullsearch->queryMaker());
 				break;
 			case 'raw':
diff --git a/typo3/sysext/mediace/Classes/ContentObject/FlowPlayerContentObject.php b/typo3/sysext/mediace/Classes/ContentObject/FlowPlayerContentObject.php
index c4a1a5f31605ae53f5023c08484c0208f56754a5..59ec55a45e85591254c1b5a5710028f066b803f3 100644
--- a/typo3/sysext/mediace/Classes/ContentObject/FlowPlayerContentObject.php
+++ b/typo3/sysext/mediace/Classes/ContentObject/FlowPlayerContentObject.php
@@ -15,6 +15,7 @@ namespace TYPO3\CMS\Mediace\ContentObject;
  */
 
 use TYPO3\CMS\Core\Utility\ArrayUtility;
+use TYPO3\CMS\Core\Utility\GeneralUtility;
 
 /**
  * Contains FlowPlayer class object.
@@ -207,8 +208,6 @@ class FlowPlayerContentObject extends \TYPO3\CMS\Frontend\ContentObject\Abstract
 	 * @return string Output
 	 */
 	public function render($conf = array()) {
-		/** @var $pageRenderer \TYPO3\CMS\Core\Page\PageRenderer */
-		$pageRenderer = $GLOBALS['TSFE']->getPageRenderer();
 		$params = ($prefix = '');
 		if ($GLOBALS['TSFE']->baseUrl) {
 			$prefix = $GLOBALS['TSFE']->baseUrl;
@@ -224,16 +223,16 @@ class FlowPlayerContentObject extends \TYPO3\CMS\Frontend\ContentObject\Abstract
 		$type = isset($conf['type.']) ? $this->cObj->stdWrap($conf['type'], $conf['type.']) : $conf['type'];
 		$typeConf = $conf[$type . '.'];
 		// Add Flowplayer js-file
-		$pageRenderer->addJsFile($this->getPathToLibrary('flowplayer/flowplayer-3.2.13.min.js'));
+		$this->getPageRenderer()->addJsFile($this->getPathToLibrary('flowplayer/flowplayer-3.2.13.min.js'));
 		// Add Flowpayer css for exprss install
-		$pageRenderer->addCssFile($this->getPathToLibrary('flowplayer/express-install/express-install.css'));
+		$this->getPageRenderer()->addCssFile($this->getPathToLibrary('flowplayer/express-install/express-install.css'));
 		// Add videoJS js-file
-		$pageRenderer->addJsFile($this->getPathToLibrary('videojs/video-js/video.js'));
+		$this->getPageRenderer()->addJsFile($this->getPathToLibrary('videojs/video-js/video.js'));
 		// Add videoJS css-file
-		$pageRenderer->addCssFile($this->getPathToLibrary('videojs/video-js/video-js.css'));
+		$this->getPageRenderer()->addCssFile($this->getPathToLibrary('videojs/video-js/video-js.css'));
 		// Add extended videoJS control bar
-		$pageRenderer->addJsFile($this->getPathToLibrary('videojs/video-js/controls/control-bar.js'));
-		$pageRenderer->addCssFile($this->getPathToLibrary('videojs/video-js/controls/control-bar.css'));
+		$this->getPageRenderer()->addJsFile($this->getPathToLibrary('videojs/video-js/controls/control-bar.js'));
+		$this->getPageRenderer()->addCssFile($this->getPathToLibrary('videojs/video-js/controls/control-bar.css'));
 		// Build Flash configuration
 		$player = isset($typeConf['player.']) ? $this->cObj->stdWrap($typeConf['player'], $typeConf['player.']) : $typeConf['player'];
 		if (!$player) {
@@ -315,7 +314,7 @@ class FlowPlayerContentObject extends \TYPO3\CMS\Frontend\ContentObject\Abstract
 		// Hook for manipulating the conf array, it's needed for some players like flowplayer
 		if (is_array($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['tslib/hooks/class.tx_cms_mediaitems.php']['swfParamTransform'])) {
 			foreach ($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['tslib/hooks/class.tx_cms_mediaitems.php']['swfParamTransform'] as $classRef) {
-				\TYPO3\CMS\Core\Utility\GeneralUtility::callUserFunction($classRef, $conf, $this);
+				GeneralUtility::callUserFunction($classRef, $conf, $this);
 			}
 		}
 		// Flowplayer config
@@ -333,7 +332,7 @@ class FlowPlayerContentObject extends \TYPO3\CMS\Frontend\ContentObject\Abstract
 		$videoSources = '';
 		if (is_array($conf['sources'])) {
 			foreach ($conf['sources'] as $source) {
-				$fileinfo = \TYPO3\CMS\Core\Utility\GeneralUtility::split_fileref($source);
+				$fileinfo = GeneralUtility::split_fileref($source);
 				$mimeType = $this->mimeTypes[$fileinfo['fileext']]['video'];
 				$videoSources .= '<source src="' . $source . '"' . ($mimeType ? ' type="' . $mimeType . '"' : '') . ' />' . LF;
 			}
@@ -342,7 +341,7 @@ class FlowPlayerContentObject extends \TYPO3\CMS\Frontend\ContentObject\Abstract
 		$audioSources = '';
 		if (is_array($conf['audioSources'])) {
 			foreach ($conf['audioSources'] as $source) {
-				$fileinfo = \TYPO3\CMS\Core\Utility\GeneralUtility::split_fileref($source);
+				$fileinfo = GeneralUtility::split_fileref($source);
 				$mimeType = $this->mimeTypes[$fileinfo['fileext']]['audio'];
 				$audioSources .= '<source src="' . $source . '"' . ($mimeType ? ' type="' . $mimeType . '"' : '') . ' />' . LF;
 			}
@@ -352,7 +351,7 @@ class FlowPlayerContentObject extends \TYPO3\CMS\Frontend\ContentObject\Abstract
 			// Assemble captions track tag
 			$videoCaptions = '<track id="' . $replaceElementIdString . '_captions_track" kind="captions" src="' . $conf['caption'] . '" default>' . LF;
 			// Add videoJS extension for captions
-			$pageRenderer->addJsFile($this->getPathToLibrary('videojs/video-js/controls/captions.js'));
+			$this->getPageRenderer()->addJsFile($this->getPathToLibrary('videojs/video-js/controls/captions.js'));
 			// Flowplayer captions
 			$conf['videoflashvars']['captionUrl'] = $conf['caption'];
 			// Flowplayer captions plugin configuration
@@ -366,7 +365,7 @@ class FlowPlayerContentObject extends \TYPO3\CMS\Frontend\ContentObject\Abstract
 		if ($conf['type'] == 'video') {
 			if (is_array($conf['audioSources']) && !empty($conf['audioSources'])) {
 				// Add videoJS audio description toggle
-				$pageRenderer->addJsFile($this->getPathToLibrary('videojs/video-js/controls/audio-description.js'));
+				$this->getPageRenderer()->addJsFile($this->getPathToLibrary('videojs/video-js/controls/audio-description.js'));
 			}
 			if (isset($conf['audioFallback'])) {
 				// Audio description flowplayer config (remove controls)
@@ -504,7 +503,7 @@ class FlowPlayerContentObject extends \TYPO3\CMS\Frontend\ContentObject\Abstract
 					// Create "source" elements
 					if (is_array($conf['sources']) && !empty($conf['sources'])) {
 						foreach ($conf['sources'] as $source) {
-							$fileinfo = \TYPO3\CMS\Core\Utility\GeneralUtility::split_fileref($source);
+							$fileinfo = GeneralUtility::split_fileref($source);
 							$mimeType = $this->mimeTypes[$fileinfo['fileext']]['video'];
 							$videoTagAssembly .= '
 			' . $replaceElementIdString . '_video_js.appendChild($f.extend(document.createElement("source"), {
@@ -557,7 +556,7 @@ class FlowPlayerContentObject extends \TYPO3\CMS\Frontend\ContentObject\Abstract
 					// Test whether the browser supports any of types of the provided sources
 					$supported = array();
 					foreach ($conf['sources'] as $source) {
-						$fileinfo = \TYPO3\CMS\Core\Utility\GeneralUtility::split_fileref($source);
+						$fileinfo = GeneralUtility::split_fileref($source);
 						$mimeType = $this->mimeTypes[$fileinfo['fileext']]['video'];
 						$supported[] = $replaceElementIdString . '_videoTag.canPlayType("' . $mimeType . '") != ""';
 					}
@@ -596,7 +595,7 @@ class FlowPlayerContentObject extends \TYPO3\CMS\Frontend\ContentObject\Abstract
 				// Create "source" elements
 				if (is_array($conf['audioSources']) && !empty($conf['audioSources'])) {
 					foreach ($conf['audioSources'] as $source) {
-						$fileinfo = \TYPO3\CMS\Core\Utility\GeneralUtility::split_fileref($source);
+						$fileinfo = GeneralUtility::split_fileref($source);
 						$mimeType = $this->mimeTypes[$fileinfo['fileext']]['audio'];
 						$audioTagAssembly .= '
 		' . $replaceElementIdString . '_audio_element.appendChild($f.extend(document.createElement("source"), {
@@ -637,7 +636,7 @@ class FlowPlayerContentObject extends \TYPO3\CMS\Frontend\ContentObject\Abstract
 				// Test whether the browser supports any of types of the provided sources
 				$supported = array();
 				foreach ($conf['audioSources'] as $source) {
-					$fileinfo = \TYPO3\CMS\Core\Utility\GeneralUtility::split_fileref($source);
+					$fileinfo = GeneralUtility::split_fileref($source);
 					$mimeType = $this->mimeTypes[$fileinfo['fileext']]['audio'];
 					$supported[] = $replaceElementIdString . '_audioTag.canPlayType("' . $mimeType . '") != ""';
 				}
@@ -714,7 +713,7 @@ class FlowPlayerContentObject extends \TYPO3\CMS\Frontend\ContentObject\Abstract
 		if ($jsInlineCode) {
 			$jsInlineCode = 'VideoJS.DOMReady(function(){' . $jsInlineCode . LF . '});';
 		}
-		$pageRenderer->addJsInlineCode($replaceElementIdString, $jsInlineCode);
+		$this->getPageRenderer()->addJsInlineCode($replaceElementIdString, $jsInlineCode);
 		if (isset($conf['stdWrap.'])) {
 			$content = $this->cObj->stdWrap($content, $conf['stdWrap.']);
 		}
diff --git a/typo3/sysext/mediace/Classes/ContentObject/QuicktimeObjectContentObject.php b/typo3/sysext/mediace/Classes/ContentObject/QuicktimeObjectContentObject.php
index 45702058f3b58a6170e5783c8afe5773ce298883..63eb6986af4acc3f658a8b18d06a4fd2b641bd5c 100644
--- a/typo3/sysext/mediace/Classes/ContentObject/QuicktimeObjectContentObject.php
+++ b/typo3/sysext/mediace/Classes/ContentObject/QuicktimeObjectContentObject.php
@@ -51,7 +51,7 @@ class QuicktimeObjectContentObject extends \TYPO3\CMS\Frontend\ContentObject\Abs
 
 		$typeConf = $conf[$type . '.'];
 		// Add QTobject js-file
-		$GLOBALS['TSFE']->getPageRenderer()->addJsFile($this->getPathToLibrary('flashmedia/qtobject/qtobject.js'));
+		$this->getPageRenderer()->addJsFile($this->getPathToLibrary('flashmedia/qtobject/qtobject.js'));
 		$replaceElementIdString = str_replace('.', '', uniqid('mmqt', TRUE));
 		$GLOBALS['TSFE']->register['MMQTID'] = $replaceElementIdString;
 		$qtObject = 'QTObject' . $replaceElementIdString;
diff --git a/typo3/sysext/mediace/Classes/ContentObject/ShockwaveFlashObjectContentObject.php b/typo3/sysext/mediace/Classes/ContentObject/ShockwaveFlashObjectContentObject.php
index 0e97f5366c15ffdba167d396e9c167389d904ec6..ab929d1fd2b50df6db42e17ac81e27e72969f150 100644
--- a/typo3/sysext/mediace/Classes/ContentObject/ShockwaveFlashObjectContentObject.php
+++ b/typo3/sysext/mediace/Classes/ContentObject/ShockwaveFlashObjectContentObject.php
@@ -40,11 +40,9 @@ class ShockwaveFlashObjectContentObject extends \TYPO3\CMS\Frontend\ContentObjec
 		}
 		$type = isset($conf['type.']) ? $this->cObj->stdWrap($conf['type'], $conf['type.']) : $conf['type'];
 		$typeConf = $conf[$type . '.'];
-		/** @var $pageRenderer \TYPO3\CMS\Core\Page\PageRenderer */
-		$pageRenderer = $GLOBALS['TSFE']->getPageRenderer();
 
 		// Add SWFobject js-file
-		$pageRenderer->addJsFile($this->getPathToLibrary('flashmedia/swfobject/swfobject.js'));
+		$this->getPageRenderer()->addJsFile($this->getPathToLibrary('flashmedia/swfobject/swfobject.js'));
 		$player = isset($typeConf['player.']) ? $this->cObj->stdWrap($typeConf['player'], $typeConf['player.']) : $typeConf['player'];
 		if (strpos($player, 'EXT:') === 0) {
 			$player = $prefix . $GLOBALS['TSFE']->tmpl->getFileName($player);
@@ -122,7 +120,7 @@ class ShockwaveFlashObjectContentObject extends \TYPO3\CMS\Frontend\ContentObjec
 		$embed = 'swfobject.embedSWF("' . $conf['player'] . '", "' . $replaceElementIdString . '", "' . $width . '", "' . $height . '",
 				"' . $flashVersion . '", "' . $installUrl . '", ' . $conf['embedParams'] . ');';
 		$script = $flashvars . $params . $attributes . $embed;
-		$pageRenderer->addJsInlineCode($replaceElementIdString, $script);
+		$this->getPageRenderer()->addJsInlineCode($replaceElementIdString, $script);
 		if (isset($conf['stdWrap.'])) {
 			$content = $this->cObj->stdWrap($content, $conf['stdWrap.']);
 		}
diff --git a/typo3/sysext/opendocs/Classes/Backend/ToolbarItems/OpendocsToolbarItem.php b/typo3/sysext/opendocs/Classes/Backend/ToolbarItems/OpendocsToolbarItem.php
index 36f716232405cb0db9ebae7aa7590a8d908bd033..79916986c0df0819f318a5c85a6841fdef865707 100644
--- a/typo3/sysext/opendocs/Classes/Backend/ToolbarItems/OpendocsToolbarItem.php
+++ b/typo3/sysext/opendocs/Classes/Backend/ToolbarItems/OpendocsToolbarItem.php
@@ -16,6 +16,7 @@ namespace TYPO3\CMS\Opendocs\Backend\ToolbarItems;
 
 use TYPO3\CMS\Backend\Toolbar\ToolbarItemInterface;
 use TYPO3\CMS\Backend\Utility\IconUtility;
+use TYPO3\CMS\Core\Page\PageRenderer;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 
 /**
@@ -262,12 +263,10 @@ class OpendocsToolbarItem implements ToolbarItemInterface {
 	/**
 	 * Returns current PageRenderer
 	 *
-	 * @return \TYPO3\CMS\Core\Page\PageRenderer
+	 * @return PageRenderer
 	 */
 	protected function getPageRenderer() {
-		/** @var  \TYPO3\CMS\Backend\Template\DocumentTemplate $documentTemplate */
-		$documentTemplate = $GLOBALS['TBE_TEMPLATE'];
-		return $documentTemplate->getPageRenderer();
+		return GeneralUtility::makeInstance(PageRenderer::class);
 	}
 
 	/**
diff --git a/typo3/sysext/recordlist/Classes/Browser/ElementBrowser.php b/typo3/sysext/recordlist/Classes/Browser/ElementBrowser.php
index 150dfb0b9c1205c9583869f50b42aa466f45257c..93235fb61fdc7967da1ef3b3729e22f92950e38a 100644
--- a/typo3/sysext/recordlist/Classes/Browser/ElementBrowser.php
+++ b/typo3/sysext/recordlist/Classes/Browser/ElementBrowser.php
@@ -17,10 +17,13 @@ namespace TYPO3\CMS\Recordlist\Browser;
 use TYPO3\CMS\Backend\Form\FormEngine;
 use TYPO3\CMS\Backend\RecordList\ElementBrowserRecordList;
 use TYPO3\CMS\Backend\Template\DocumentTemplate;
+use TYPO3\CMS\Backend\Utility\BackendUtility;
+use TYPO3\CMS\Backend\Utility\IconUtility;
 use TYPO3\CMS\Core\Authentication\BackendUserAuthentication;
 use TYPO3\CMS\Core\Database\DatabaseConnection;
 use TYPO3\CMS\Core\ElementBrowser\ElementBrowserHookInterface;
 use TYPO3\CMS\Core\Messaging\FlashMessage;
+use TYPO3\CMS\Core\Page\PageRenderer;
 use TYPO3\CMS\Core\Resource\Exception;
 use TYPO3\CMS\Core\Resource\File;
 use TYPO3\CMS\Core\Resource\FileInterface;
@@ -32,8 +35,6 @@ use TYPO3\CMS\Core\Resource\ResourceFactory;
 use TYPO3\CMS\Core\Utility\File\BasicFileUtility;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\CMS\Core\Utility\StringUtility;
-use TYPO3\CMS\Backend\Utility\BackendUtility;
-use TYPO3\CMS\Backend\Utility\IconUtility;
 use TYPO3\CMS\Core\Utility\MathUtility;
 use TYPO3\CMS\Frontend\Service\TypoLinkCodecService;
 use TYPO3\CMS\Lang\LanguageService;
@@ -248,6 +249,11 @@ class ElementBrowser {
 	 */
 	public $fileProcessor;
 
+	/**
+	 * @var PageRenderer
+	 */
+	protected $pageRenderer = NULL;
+
 	/**
 	 * Sets the script url depending on being a module or script request
 	 */
@@ -363,8 +369,8 @@ class ElementBrowser {
 		$this->doc = GeneralUtility::makeInstance(DocumentTemplate::class);
 		$this->doc->bodyTagId = 'typo3-browse-links-php';
 		$this->doc->backPath = $GLOBALS['BACK_PATH'];
-		$this->doc->getPageRenderer()->loadRequireJsModule('TYPO3/CMS/Backend/BrowseLinks');
-		$this->doc->getPageRenderer()->loadRequireJsModule('TYPO3/CMS/Backend/LegacyTree');
+		$this->getPageRenderer()->loadRequireJsModule('TYPO3/CMS/Backend/BrowseLinks');
+		$this->getPageRenderer()->loadRequireJsModule('TYPO3/CMS/Backend/LegacyTree');
 	}
 
 	/**
@@ -2617,4 +2623,15 @@ class ElementBrowser {
 		return $GLOBALS['TYPO3_DB'];
 	}
 
+	/**
+	 * @return PageRenderer
+	 */
+	protected function getPageRenderer() {
+		if ($this->pageRenderer === NULL) {
+			$this->pageRenderer = GeneralUtility::makeInstance(PageRenderer::class);
+		}
+
+		return $this->pageRenderer;
+	}
+
 }
diff --git a/typo3/sysext/recordlist/Classes/Controller/ElementBrowserFramesetController.php b/typo3/sysext/recordlist/Classes/Controller/ElementBrowserFramesetController.php
index 4806294bbb58aefdbb9a0b170f1d06e2eb411253..d3ee0aea73695647122151dd1f05c90490b6ff07 100644
--- a/typo3/sysext/recordlist/Classes/Controller/ElementBrowserFramesetController.php
+++ b/typo3/sysext/recordlist/Classes/Controller/ElementBrowserFramesetController.php
@@ -34,6 +34,11 @@ class ElementBrowserFramesetController {
 	 */
 	public $content;
 
+	/**
+	 * @var PageRenderer
+	 */
+	protected $pageRenderer = NULL;
+
 	/**
 	 * Main function.
 	 * Creates the header code in XHTML, the JavaScript, then the frameset for the two frames.
@@ -67,7 +72,7 @@ class ElementBrowserFramesetController {
 
 		// Create the frameset for the window
 		// Formerly there were a ' onunload="closing();"' in the <frameset> tag - but it failed on Safari browser on Mac unless the handler was "onUnload"
-		$this->content = $documentTemplate->getPageRenderer()->render(PageRenderer::PART_HEADER) .
+		$this->content = $this->getPageRenderer()->render(PageRenderer::PART_HEADER) .
 			'<frameset rows="*,1" framespacing="0" frameborder="0" border="0">
 				<frame name="content" src="' . htmlspecialchars($url) . '" marginwidth="0" marginheight="0" frameborder="0" scrolling="auto" noresize="noresize" />
 				<frame name="menu" src="' . htmlspecialchars(BackendUtility::getModuleUrl('dummy')) . '" marginwidth="0" marginheight="0" frameborder="0" scrolling="no" noresize="noresize" />
@@ -99,4 +104,15 @@ class ElementBrowserFramesetController {
 		return $GLOBALS['LANG'];
 	}
 
+	/**
+	 * @return PageRenderer
+	 */
+	protected function getPageRenderer() {
+		if ($this->pageRenderer === NULL) {
+			$this->pageRenderer = GeneralUtility::makeInstance(PageRenderer::class);
+		}
+
+		return $this->pageRenderer;
+	}
+
 }
diff --git a/typo3/sysext/recordlist/Classes/RecordList.php b/typo3/sysext/recordlist/Classes/RecordList.php
index 61beb5d46b8aa73ef583dd655dfceecfb9f10a1a..84a4ba98c15868599f808560cfab8123a022e46d 100644
--- a/typo3/sysext/recordlist/Classes/RecordList.php
+++ b/typo3/sysext/recordlist/Classes/RecordList.php
@@ -16,14 +16,15 @@ namespace TYPO3\CMS\Recordlist;
 
 use TYPO3\CMS\Backend\Clipboard\Clipboard;
 use TYPO3\CMS\Backend\Template\DocumentTemplate;
+use TYPO3\CMS\Backend\Utility\BackendUtility;
 use TYPO3\CMS\Backend\Utility\IconUtility;
 use TYPO3\CMS\Core\Authentication\BackendUserAuthentication;
 use TYPO3\CMS\Core\DataHandling\DataHandler;
 use TYPO3\CMS\Core\Messaging\FlashMessage;
+use TYPO3\CMS\Core\Page\PageRenderer;
 use TYPO3\CMS\Core\Type\Bitmask\Permission;
 use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
-use TYPO3\CMS\Backend\Utility\BackendUtility;
 use TYPO3\CMS\Core\Utility\MathUtility;
 use TYPO3\CMS\Extbase\Service\TypoScriptService;
 use TYPO3\CMS\Lang\LanguageService;
@@ -181,6 +182,11 @@ class RecordList {
 	 */
 	public $body = '';
 
+	/**
+	 * @var PageRenderer
+	 */
+	protected $pageRenderer = NULL;
+
 	/**
 	 * Constructor
 	 */
@@ -216,7 +222,7 @@ class RecordList {
 		$this->menuConfig();
 		// Store session data
 		$backendUser->setAndSaveSessionData(RecordList::class, $sessionData);
-		$this->getDocumentTemplate()->getPageRenderer()->addInlineLanguageLabelFile('EXT:lang/locallang_mod_web_list.xlf');
+		$this->getPageRenderer()->addInlineLanguageLabelFile('EXT:lang/locallang_mod_web_list.xlf');
 	}
 
 	/**
@@ -266,14 +272,14 @@ class RecordList {
 		$this->doc = GeneralUtility::makeInstance(DocumentTemplate::class);
 		$this->doc->backPath = $GLOBALS['BACK_PATH'];
 		$this->doc->setModuleTemplate('EXT:recordlist/Resources/Private/Templates/db_list.html');
-		$this->doc->getPageRenderer()->loadRequireJsModule('TYPO3/CMS/Backend/AjaxDataHandler');
+		$this->getPageRenderer()->loadRequireJsModule('TYPO3/CMS/Backend/AjaxDataHandler');
 		$calcPerms = $backendUser->calcPerms($this->pageinfo);
-		$this->doc->getPageRenderer()->loadRequireJsModule('TYPO3/CMS/Backend/PageActions', 'function(PageActions) {
+		$this->getPageRenderer()->loadRequireJsModule('TYPO3/CMS/Backend/PageActions', 'function(PageActions) {
 			PageActions.setPageId(' . (int)$this->id . ');
 			PageActions.setCanEditPage(' . ($calcPerms & Permission::PAGE_EDIT && !empty($this->id) ? 'true' : 'false') . ');
 			PageActions.initializePageTitleRenaming();
 		}');
-		$this->doc->getPageRenderer()->loadRequireJsModule('TYPO3/CMS/Recordlist/Tooltip');
+		$this->getPageRenderer()->loadRequireJsModule('TYPO3/CMS/Recordlist/Tooltip');
 		// Apply predefined values for hidden checkboxes
 		// Set predefined value for DisplayBigControlPanel:
 		if ($this->modTSconfig['properties']['enableDisplayBigControlPanel'] === 'activated') {
@@ -568,10 +574,14 @@ class RecordList {
 	}
 
 	/**
-	 * @return DocumentTemplate
+	 * @return PageRenderer
 	 */
-	protected function getDocumentTemplate() {
-		return $GLOBALS['TBE_TEMPLATE'];
+	protected function getPageRenderer() {
+		if ($this->pageRenderer === NULL) {
+			$this->pageRenderer = GeneralUtility::makeInstance(PageRenderer::class);
+		}
+
+		return $this->pageRenderer;
 	}
 
 }
diff --git a/typo3/sysext/recycler/Classes/Controller/RecyclerModuleController.php b/typo3/sysext/recycler/Classes/Controller/RecyclerModuleController.php
index f8bd3e85e72781436dfde5fe16d88226b602ed6e..0dd6abb951029611ebcd12e9a703400b2478078b 100644
--- a/typo3/sysext/recycler/Classes/Controller/RecyclerModuleController.php
+++ b/typo3/sysext/recycler/Classes/Controller/RecyclerModuleController.php
@@ -14,6 +14,7 @@ namespace TYPO3\CMS\Recycler\Controller;
  * The TYPO3 project - inspiring people to share!
  */
 
+use TYPO3\CMS\Core\Page\PageRenderer;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 
 /**
@@ -176,11 +177,9 @@ class RecyclerModuleController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionC
 	/**
 	 * Returns current PageRenderer
 	 *
-	 * @return \TYPO3\CMS\Core\Page\PageRenderer
+	 * @return PageRenderer
 	 */
 	protected function getPageRenderer() {
-		/** @var  \TYPO3\CMS\Backend\Template\DocumentTemplate $documentTemplate */
-		$documentTemplate = $GLOBALS['TBE_TEMPLATE'];
-		return $documentTemplate->getPageRenderer();
+		return GeneralUtility::makeInstance(PageRenderer::class);
 	}
 }
diff --git a/typo3/sysext/rtehtmlarea/Classes/BrowseLinks.php b/typo3/sysext/rtehtmlarea/Classes/BrowseLinks.php
index 05dda5c64cea7bd550e8a4913a90b9a20061c120..fcf138a8b5c924d92922d5100941253b43831c3a 100644
--- a/typo3/sysext/rtehtmlarea/Classes/BrowseLinks.php
+++ b/typo3/sysext/rtehtmlarea/Classes/BrowseLinks.php
@@ -135,10 +135,10 @@ class BrowseLinks extends \TYPO3\CMS\Recordlist\Browser\ElementBrowser {
 		$this->doc->getContextMenuCode();
 		// Apply the same styles as those of the base script
 		$this->doc->bodyTagId = 'typo3-browse-links-php';
-		$this->doc->getPageRenderer()->addCssFile($this->doc->backPath . \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extRelPath('t3skin') . 'rtehtmlarea/htmlarea.css');
+		$this->getPageRenderer()->addCssFile($this->doc->backPath . \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extRelPath('t3skin') . 'rtehtmlarea/htmlarea.css');
 		// Add attributes to body tag. Note: getBodyTagAdditions will invoke the hooks
 		$this->doc->bodyTagAdditions = $this->getBodyTagAdditions();
-		$this->doc->getPageRenderer()->loadRequireJsModule('TYPO3/CMS/Backend/LegacyTree', 'function(Tree) {
+		$this->getPageRenderer()->loadRequireJsModule('TYPO3/CMS/Backend/LegacyTree', 'function(Tree) {
 			Tree.ajaxID = "SC_alt_file_navframe::expandCollapse";
 		}');
 	}
diff --git a/typo3/sysext/rtehtmlarea/Classes/Form/Element/RichTextElement.php b/typo3/sysext/rtehtmlarea/Classes/Form/Element/RichTextElement.php
index 5b5425791e6583c89ffe72e73d1155c74fbb2df2..effe47e91a2c7f87bc81a7f20a0d9fa7c8662b81 100644
--- a/typo3/sysext/rtehtmlarea/Classes/Form/Element/RichTextElement.php
+++ b/typo3/sysext/rtehtmlarea/Classes/Form/Element/RichTextElement.php
@@ -1357,7 +1357,7 @@ class RichTextElement extends AbstractFormElement {
 	 * @return PageRenderer
 	 */
 	protected function getPageRenderer() {
-		return $GLOBALS['SOBE']->doc->getPageRenderer();
+		return GeneralUtility::makeInstance(PageRenderer::class);
 	}
 
 }
diff --git a/typo3/sysext/rtehtmlarea/Classes/SelectImage.php b/typo3/sysext/rtehtmlarea/Classes/SelectImage.php
index 3c3083016ed4a5a8d65d0b67c5a5c5379edf2b18..724db85cecaf0d8fac3660feaa306888b08a9c69 100644
--- a/typo3/sysext/rtehtmlarea/Classes/SelectImage.php
+++ b/typo3/sysext/rtehtmlarea/Classes/SelectImage.php
@@ -132,17 +132,17 @@ class SelectImage extends \TYPO3\CMS\Recordlist\Browser\ElementBrowser {
 
 		$this->doc->bodyTagId = 'typo3-browse-links-php';
 		$this->doc->bodyTagAdditions = $this->getBodyTagAdditions();
-		$this->doc->getPageRenderer()->loadRequireJsModule('TYPO3/CMS/Backend/LegacyTree', 'function(Tree) {
+		$this->getPageRenderer()->loadRequireJsModule('TYPO3/CMS/Backend/LegacyTree', 'function(Tree) {
 			Tree.ajaxID = "SC_alt_file_navframe::expandCollapse";
 		}');
-		$this->doc->getPageRenderer()->loadRequireJsModule('TYPO3/CMS/Rtehtmlarea/Modules/SelectImage', 'function(SelectImage) {
+		$this->getPageRenderer()->loadRequireJsModule('TYPO3/CMS/Rtehtmlarea/Modules/SelectImage', 'function(SelectImage) {
 			SelectImage.editorNo = ' . GeneralUtility::quoteJSvalue($this->editorNo) . ';
 			SelectImage.act = ' . GeneralUtility::quoteJSvalue(($this->act ?: reset($this->allowedItems))) . ';
 			SelectImage.sys_language_content = ' . GeneralUtility::quoteJSvalue($this->sys_language_content) . ';
 			SelectImage.RTEtsConfigParams = ' . GeneralUtility::quoteJSvalue(rawurlencode($this->RTEtsConfigParams)) . ';
 			SelectImage.bparams = ' . GeneralUtility::quoteJSvalue($this->bparams) . ';
 		}');
-		$this->doc->getPageRenderer()->addCssFile($this->doc->backPath . \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extRelPath('t3skin') . 'rtehtmlarea/htmlarea.css');
+		$this->getPageRenderer()->addCssFile($this->doc->backPath . \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extRelPath('t3skin') . 'rtehtmlarea/htmlarea.css');
 		$this->doc->getContextMenuCode();
 	}
 
diff --git a/typo3/sysext/scheduler/Classes/Controller/SchedulerModuleController.php b/typo3/sysext/scheduler/Classes/Controller/SchedulerModuleController.php
index 3b1bb4f8139fbdb5f86ecb6370fa8195bc3be39a..739325f11405ed6c2df7daee0cf4d431abe3fa4d 100644
--- a/typo3/sysext/scheduler/Classes/Controller/SchedulerModuleController.php
+++ b/typo3/sysext/scheduler/Classes/Controller/SchedulerModuleController.php
@@ -14,14 +14,15 @@ namespace TYPO3\CMS\Scheduler\Controller;
  * The TYPO3 project - inspiring people to share!
  */
 
+use TYPO3\CMS\Backend\Utility\BackendUtility;
+use TYPO3\CMS\Backend\Utility\IconUtility;
 use TYPO3\CMS\Core\Database\DatabaseConnection;
+use TYPO3\CMS\Core\Messaging\FlashMessage;
 use TYPO3\CMS\Core\Messaging\FlashMessageQueue;
 use TYPO3\CMS\Core\Messaging\FlashMessageService;
+use TYPO3\CMS\Core\Page\PageRenderer;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
-use TYPO3\CMS\Backend\Utility\BackendUtility;
-use TYPO3\CMS\Backend\Utility\IconUtility;
-use TYPO3\CMS\Core\Messaging\FlashMessage;
 use TYPO3\CMS\Fluid\ViewHelpers\Be\InfoboxViewHelper;
 use TYPO3\CMS\Saltedpasswords\Salt\SaltFactory;
 use TYPO3\CMS\Saltedpasswords\Utility\SaltedPasswordsUtility;
@@ -68,11 +69,6 @@ class SchedulerModuleController extends \TYPO3\CMS\Backend\Module\BaseScriptClas
 	 */
 	protected $scheduler;
 
-	/**
-	 * @var \TYPO3\CMS\Core\Page\PageRenderer
-	 */
-	protected $pageRenderer;
-
 	/**
 	 * @var string
 	 */
@@ -126,8 +122,6 @@ class SchedulerModuleController extends \TYPO3\CMS\Backend\Module\BaseScriptClas
 		$this->doc->bodyTagId = 'typo3-mod-php';
 		$this->doc->bodyTagAdditions = 'class="tx_scheduler_mod1"';
 
-		$this->pageRenderer = $this->doc->getPageRenderer();
-
 		// Create scheduler instance
 		$this->scheduler = GeneralUtility::makeInstance(\TYPO3\CMS\Scheduler\Scheduler::class);
 	}
@@ -647,9 +641,9 @@ class SchedulerModuleController extends \TYPO3\CMS\Backend\Module\BaseScriptClas
 		}
 
 		// Load necessary JavaScript
-		$this->pageRenderer->loadJquery();
-		$this->pageRenderer->loadRequireJsModule('TYPO3/CMS/Scheduler/Scheduler');
-		$this->pageRenderer->loadRequireJsModule('TYPO3/CMS/Backend/DateTimePicker');
+		$this->getPageRenderer()->loadJquery();
+		$this->getPageRenderer()->loadRequireJsModule('TYPO3/CMS/Scheduler/Scheduler');
+		$this->getPageRenderer()->loadRequireJsModule('TYPO3/CMS/Backend/DateTimePicker');
 
 		// Start rendering the add/edit form
 		$this->view->assign('uid', htmlspecialchars($this->submittedData['uid']));
@@ -921,8 +915,8 @@ class SchedulerModuleController extends \TYPO3\CMS\Backend\Module\BaseScriptClas
 			$this->view->setTemplatePathAndFilename($this->backendTemplatePath . 'ListTasksNoTasks.html');
 			return $this->view->render();
 		} else {
-			$this->pageRenderer->loadJquery();
-			$this->pageRenderer->loadRequireJsModule('TYPO3/CMS/Scheduler/Scheduler');
+			$this->getPageRenderer()->loadJquery();
+			$this->getPageRenderer()->loadRequireJsModule('TYPO3/CMS/Scheduler/Scheduler');
 			$table = array();
 			// Header row
 			$table[] =
diff --git a/typo3/sysext/t3editor/Classes/Hook/FileEditHook.php b/typo3/sysext/t3editor/Classes/Hook/FileEditHook.php
index 0222872cd2385b9d12a201886a29d1dfd810ae79..fff98bce4df16e30c7389239a27d15ad64d1bbb5 100644
--- a/typo3/sysext/t3editor/Classes/Hook/FileEditHook.php
+++ b/typo3/sysext/t3editor/Classes/Hook/FileEditHook.php
@@ -14,6 +14,7 @@ namespace TYPO3\CMS\T3editor\Hook;
  * The TYPO3 project - inspiring people to share!
  */
 
+use TYPO3\CMS\Core\Page\PageRenderer;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 
 /**
@@ -71,7 +72,7 @@ class FileEditHook {
 		if (GeneralUtility::_GET('M') === 'file_edit') {
 			$t3editor = $this->getT3editor();
 			$documentTemplate->JScode .= $t3editor->getJavascriptCode($documentTemplate);
-			$documentTemplate->getPageRenderer()->loadRequireJsModule('TYPO3/CMS/T3editor/FileEdit');
+			$this->getPageRenderer()->loadRequireJsModule('TYPO3/CMS/T3editor/FileEdit');
 		}
 	}
 
@@ -112,4 +113,11 @@ class FileEditHook {
 		return $savingsuccess;
 	}
 
+	/**
+	 * @return PageRenderer
+	 */
+	protected function getPageRenderer() {
+		return GeneralUtility::makeInstance(PageRenderer::class);
+	}
+
 }
diff --git a/typo3/sysext/t3editor/Classes/T3editor.php b/typo3/sysext/t3editor/Classes/T3editor.php
index ce78c7adc159af0735bc8143600f51742c909992..6719686d323168504e06c601252f9dad47f232ad 100644
--- a/typo3/sysext/t3editor/Classes/T3editor.php
+++ b/typo3/sysext/t3editor/Classes/T3editor.php
@@ -13,6 +13,8 @@ namespace TYPO3\CMS\T3editor;
  *
  * The TYPO3 project - inspiring people to share!
  */
+
+use TYPO3\CMS\Core\Page\PageRenderer;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 
 /**
@@ -163,8 +165,7 @@ class T3editor implements \TYPO3\CMS\Core\SingletonInterface {
 		$path_t3e = \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extRelPath('t3editor');
 		$path_codemirror = 'contrib/codemirror/js/';
 		// Include needed javascript-frameworks
-		$pageRenderer = $doc->getPageRenderer();
-		/** @var $pageRenderer \TYPO3\CMS\Core\Page\PageRenderer */
+		$pageRenderer = $this->getPageRenderer();
 		$pageRenderer->loadPrototype();
 		$pageRenderer->loadScriptaculous();
 		// Include editor-css
@@ -381,4 +382,11 @@ class T3editor implements \TYPO3\CMS\Core\SingletonInterface {
 		$ajaxObj->setContentFormat('jsonbody');
 	}
 
+	/**
+	 * @return PageRenderer
+	 */
+	protected function getPageRenderer() {
+		return GeneralUtility::makeInstance(PageRenderer::class);
+	}
+
 }
diff --git a/typo3/sysext/taskcenter/Classes/Controller/TaskModuleController.php b/typo3/sysext/taskcenter/Classes/Controller/TaskModuleController.php
index 6ad6ab8d57cacc92f792f8c0ab92ea48c1d112c4..463609f1c28303a471b94b52f095c61f4a65a0f5 100644
--- a/typo3/sysext/taskcenter/Classes/Controller/TaskModuleController.php
+++ b/typo3/sysext/taskcenter/Classes/Controller/TaskModuleController.php
@@ -53,7 +53,7 @@ class TaskModuleController extends \TYPO3\CMS\Backend\Module\BaseScriptClass {
 		$this->doc = GeneralUtility::makeInstance(\TYPO3\CMS\Backend\Template\DocumentTemplate::class);
 		$this->doc->setModuleTemplate(ExtensionManagementUtility::extPath('taskcenter') . 'Resources/Private/Templates/mod_template.html');
 		$this->doc->backPath = $GLOBALS['BACK_PATH'];
-		$this->doc->getPageRenderer()->loadJquery();
+		$this->getPageRenderer()->loadJquery();
 		$this->doc->addStyleSheet('tx_taskcenter', '../' . ExtensionManagementUtility::siteRelPath('taskcenter') . 'Resources/Public/Styles/styles.css');
 	}
 
@@ -218,7 +218,7 @@ class TaskModuleController extends \TYPO3\CMS\Backend\Module\BaseScriptClass {
 		$count = 0;
 		// Change the sorting of items to the user's one
 		if ($mainMenu) {
-			$this->doc->getPageRenderer()->loadRequireJsModule('TYPO3/CMS/Taskcenter/Taskcenter');
+			$this->getPageRenderer()->loadRequireJsModule('TYPO3/CMS/Taskcenter/Taskcenter');
 			$userSorting = unserialize($this->getBackendUser()->uc['taskcenter']['sorting']);
 			if (is_array($userSorting)) {
 				$newSorting = array();
diff --git a/typo3/sysext/tstemplate/Classes/Controller/TypoScriptTemplateConstantEditorModuleFunctionController.php b/typo3/sysext/tstemplate/Classes/Controller/TypoScriptTemplateConstantEditorModuleFunctionController.php
index f05c70c34f921437cfe2b664f85a91e55341bf68..14ebb6231a412a3df14e69a6a26b0e28187a285b 100644
--- a/typo3/sysext/tstemplate/Classes/Controller/TypoScriptTemplateConstantEditorModuleFunctionController.php
+++ b/typo3/sysext/tstemplate/Classes/Controller/TypoScriptTemplateConstantEditorModuleFunctionController.php
@@ -124,7 +124,7 @@ class TypoScriptTemplateConstantEditorModuleFunctionController extends AbstractF
 			$tplRow = $this->getTemplateRow();
 			$theConstants = $this->getConstants();
 
-			$this->pObj->doc->getPageRenderer()->loadRequireJsModule('TYPO3/CMS/Tstemplate/ConstantEditor');
+			$this->getPageRenderer()->loadRequireJsModule('TYPO3/CMS/Tstemplate/ConstantEditor');
 			$saveId = $tplRow['_ORIG_uid'] ? $tplRow['_ORIG_uid'] : $tplRow['uid'];
 			// Update template ?
 			if (GeneralUtility::_POST('submit') || MathUtility::canBeInterpretedAsInteger(GeneralUtility::_POST('submit_x')) && MathUtility::canBeInterpretedAsInteger(GeneralUtility::_POST('submit_y'))) {
diff --git a/typo3/sysext/viewpage/Classes/Controller/ViewModuleController.php b/typo3/sysext/viewpage/Classes/Controller/ViewModuleController.php
index b2e17a43b9d78a59a098a5905cd9b816b0a94409..574513dda966ab58f4da4f33fb39451f8554c290 100644
--- a/typo3/sysext/viewpage/Classes/Controller/ViewModuleController.php
+++ b/typo3/sysext/viewpage/Classes/Controller/ViewModuleController.php
@@ -15,6 +15,8 @@ namespace TYPO3\CMS\Viewpage\Controller;
  */
 
 use TYPO3\CMS\Backend\Utility\BackendUtility;
+use TYPO3\CMS\Core\Page\PageRenderer;
+use TYPO3\CMS\Core\Utility\GeneralUtility;
 
 /**
  * Controller for viewing the frontend
@@ -31,7 +33,8 @@ class ViewModuleController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionContr
 	 */
 	public function initializeAction() {
 		$GLOBALS['LANG']->includeLLFile('EXT:viewpage/Resources/Private/Language/locallang.xlf');
-		$GLOBALS['TBE_TEMPLATE']->getPageRenderer()->addInlineLanguageLabelFile('EXT:viewpage/Resources/Private/Language/locallang.xlf');
+		$pageRenderer = GeneralUtility::makeInstance(PageRenderer::class);
+		$pageRenderer->addInlineLanguageLabelFile('EXT:viewpage/Resources/Private/Language/locallang.xlf');
 	}
 
 	/**
@@ -50,12 +53,12 @@ class ViewModuleController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionContr
 	 * @return string
 	 */
 	protected function getTargetUrl() {
-		$pageIdToShow = (int)\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('id');
+		$pageIdToShow = (int)GeneralUtility::_GP('id');
 		$adminCommand = $this->getAdminCommand($pageIdToShow);
 		$domainName = $this->getDomainName($pageIdToShow);
 		// Mount point overlay: Set new target page id and mp parameter
 		/** @var \TYPO3\CMS\Frontend\Page\PageRepository $sysPage */
-		$sysPage = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Frontend\Page\PageRepository::class);
+		$sysPage = GeneralUtility::makeInstance(\TYPO3\CMS\Frontend\Page\PageRepository::class);
 		$sysPage->init(FALSE);
 		$mountPointMpParameter = '';
 		$finalPageIdToShow = $pageIdToShow;
@@ -74,7 +77,7 @@ class ViewModuleController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionContr
 			} else {
 				$protocol = 'http';
 				$page = (array)$sysPage->getPage($finalPageIdToShow);
-				if ($page['url_scheme'] == 2 || $page['url_scheme'] == 0 && \TYPO3\CMS\Core\Utility\GeneralUtility::getIndpEnv('TYPO3_SSL')) {
+				if ($page['url_scheme'] == 2 || $page['url_scheme'] == 0 && GeneralUtility::getIndpEnv('TYPO3_SSL')) {
 					$protocol = 'https';
 				}
 				$protocolAndHost = $protocol . '://' . $domainName;
@@ -139,7 +142,7 @@ class ViewModuleController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionContr
 	 * @return array
 	 */
 	protected function getPreviewFrameWidths() {
-		$pageId = (int)\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('id');
+		$pageId = (int)GeneralUtility::_GP('id');
 		$modTSconfig = BackendUtility::getModTSconfig($pageId, 'mod.web_view');
 		$widths = array(
 			'100%|100%' => $GLOBALS['LANG']->getLL('autoSize')
diff --git a/typo3/sysext/wizard_crpages/Classes/Controller/CreatePagesWizardModuleFunctionController.php b/typo3/sysext/wizard_crpages/Classes/Controller/CreatePagesWizardModuleFunctionController.php
index 4f982786357d2d2eb4d14ae6fb9eb781d36b0cde..82d38b5d6419c38ae6a346d226ffa6bc5d781f9e 100644
--- a/typo3/sysext/wizard_crpages/Classes/Controller/CreatePagesWizardModuleFunctionController.php
+++ b/typo3/sysext/wizard_crpages/Classes/Controller/CreatePagesWizardModuleFunctionController.php
@@ -163,13 +163,11 @@ class CreatePagesWizardModuleFunctionController extends \TYPO3\CMS\Backend\Modul
 						<input class="btn btn-default" type="reset" value="' . $this->getLanguageService()->getLL('wiz_newPages_lReset') . '" />
 					</div>';
 
-				/** @var \TYPO3\CMS\Core\Page\PageRenderer $pageRenderer */
-				$pageRenderer = $GLOBALS['TBE_TEMPLATE']->getPageRenderer();
-				$pageRenderer->loadJquery();
-				$pageRenderer->loadRequireJsModule('TYPO3/CMS/WizardCrpages/WizardCreatePages');
+				$this->getPageRenderer()->loadJquery();
+				$this->getPageRenderer()->loadRequireJsModule('TYPO3/CMS/WizardCrpages/WizardCreatePages');
 				// Add inline code
 				$inlineJavaScriptCode = 'var tpl = "' . addslashes(str_replace(array(LF, TAB), array('', ''), $this->getFormLine('#'))) . '", i, line, div, bg, label;';
-				$pageRenderer->addJsInlineCode('wizard_crpages', $inlineJavaScriptCode);
+				$this->getPageRenderer()->addJsInlineCode('wizard_crpages', $inlineJavaScriptCode);
 			}
 		} else {
 			$theCode .= GeneralUtility::makeInstance(FlashMessage::class, '', $this->getLanguageService()->getLL('wiz_newPages_errorMsg1'), FlashMessage::ERROR)->render();
diff --git a/typo3/sysext/workspaces/Classes/Backend/ToolbarItems/WorkspaceSelectorToolbarItem.php b/typo3/sysext/workspaces/Classes/Backend/ToolbarItems/WorkspaceSelectorToolbarItem.php
index 64d734312fbaea4fdc4be6a2dde25aed7ec5c15f..aaa66577b0d3b1ff41b09cded9c1a13c57e8da78 100644
--- a/typo3/sysext/workspaces/Classes/Backend/ToolbarItems/WorkspaceSelectorToolbarItem.php
+++ b/typo3/sysext/workspaces/Classes/Backend/ToolbarItems/WorkspaceSelectorToolbarItem.php
@@ -14,10 +14,11 @@ namespace TYPO3\CMS\Workspaces\Backend\ToolbarItems;
  * The TYPO3 project - inspiring people to share!
  */
 
-use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\CMS\Backend\Toolbar\ToolbarItemInterface;
-use TYPO3\CMS\Workspaces\Service\WorkspaceService;
 use TYPO3\CMS\Backend\Utility\IconUtility;
+use TYPO3\CMS\Core\Page\PageRenderer;
+use TYPO3\CMS\Core\Utility\GeneralUtility;
+use TYPO3\CMS\Workspaces\Service\WorkspaceService;
 
 /**
  * Class to render the workspace selector
@@ -166,12 +167,10 @@ class WorkspaceSelectorToolbarItem implements ToolbarItemInterface {
 	/**
 	 * Returns current PageRenderer
 	 *
-	 * @return \TYPO3\CMS\Core\Page\PageRenderer
+	 * @return PageRenderer
 	 */
 	protected function getPageRenderer() {
-		/** @var  \TYPO3\CMS\Backend\Template\DocumentTemplate $documentTemplate */
-		$documentTemplate = $GLOBALS['TBE_TEMPLATE'];
-		return $documentTemplate->getPageRenderer();
+		return GeneralUtility::makeInstance(PageRenderer::class);
 	}
 
 	/**
diff --git a/typo3/sysext/workspaces/Classes/Controller/AbstractController.php b/typo3/sysext/workspaces/Classes/Controller/AbstractController.php
index 4bd58e4fcfd92954565941b9317dd7e3ee076a66..bea907a9c0a47f41c9db9235d23a4e18a36befe3 100644
--- a/typo3/sysext/workspaces/Classes/Controller/AbstractController.php
+++ b/typo3/sysext/workspaces/Classes/Controller/AbstractController.php
@@ -14,6 +14,9 @@ namespace TYPO3\CMS\Workspaces\Controller;
  * The TYPO3 project - inspiring people to share!
  */
 
+use TYPO3\CMS\Core\Page\PageRenderer;
+use TYPO3\CMS\Core\Utility\GeneralUtility;
+
 /**
  * Abstract action controller.
  *
@@ -27,7 +30,7 @@ class AbstractController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionControl
 	protected $extensionName = 'Workspaces';
 
 	/**
-	 * @var \TYPO3\CMS\Core\Page\PageRenderer
+	 * @var PageRenderer
 	 */
 	protected $pageRenderer;
 
@@ -43,7 +46,7 @@ class AbstractController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionControl
 	 */
 	protected function initializeAction() {
 		// @todo Evaluate how the intval() call can be used with Extbase validators/filters
-		$this->pageId = (int)\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('id');
+		$this->pageId = (int)GeneralUtility::_GP('id');
 		$icons = array(
 			'language' => \TYPO3\CMS\Backend\Utility\IconUtility::getSpriteIconClasses('flags-multiple'),
 			'integrity' => \TYPO3\CMS\Backend\Utility\IconUtility::getSpriteIconClasses('status-dialog-information'),
@@ -100,8 +103,8 @@ class AbstractController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionControl
 	 * @return void
 	 */
 	public function processRequest(\TYPO3\CMS\Extbase\Mvc\RequestInterface $request, \TYPO3\CMS\Extbase\Mvc\ResponseInterface $response) {
-		$this->template = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Backend\Template\DocumentTemplate::class);
-		$this->pageRenderer = $this->template->getPageRenderer();
+		$this->template = GeneralUtility::makeInstance(\TYPO3\CMS\Backend\Template\DocumentTemplate::class);
+		$this->pageRenderer = $this->getPageRenderer();
 		$GLOBALS['SOBE'] = new \stdClass();
 		$GLOBALS['SOBE']->doc = $this->template;
 		parent::processRequest($request, $response);
@@ -145,4 +148,11 @@ class AbstractController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionControl
 		return $GLOBALS['BE_USER'];
 	}
 
+	/**
+	 * @return PageRenderer
+	 */
+	protected function getPageRenderer() {
+		return GeneralUtility::makeInstance(PageRenderer::class);
+	}
+
 }