diff --git a/lib/private/Template/SCSSCacher.php b/lib/private/Template/SCSSCacher.php
index 8d1eda99ee03cc6400bea94678caead42c3b75ef..ddd0131eac220acebeb72325018abbabee52a171 100644
--- a/lib/private/Template/SCSSCacher.php
+++ b/lib/private/Template/SCSSCacher.php
@@ -102,7 +102,7 @@ class SCSSCacher {
 		$fileNameCSS = $this->prependBaseurlPrefix(str_replace('.scss', '.css', $fileNameSCSS));
 
 		$path = implode('/', $path);
-		$webDir = $this->getWebDir($path, $app);
+		$webDir = $this->getWebDir($path, $app, $this->serverRoot, \OC::$WEBROOT);
 
 		try {
 			$folder = $this->appData->getFolder($app);
@@ -187,7 +187,7 @@ class SCSSCacher {
 		$scss = new Compiler();
 		$scss->setImportPaths([
 			$path,
-			\OC::$SERVERROOT . '/core/css/',
+			$this->serverRoot . '/core/css/',
 		]);
 		// Continue after throw
 		$scss->setIgnoreErrors(true);
@@ -313,17 +313,19 @@ class SCSSCacher {
 	/**
 	 * Get WebDir root
 	 * @param string $path the css file path
-	 * @param string $app the app name
+	 * @param string $appName the app name
+	 * @param string $serverRoot the server root path
+	 * @param string $webRoot the nextcloud installation root path
 	 * @return string the webDir
 	 */
-	private function getWebDir($path, $app) {
+	private function getWebDir($path, $appName, $serverRoot, $webRoot) {
 		// Detect if path is within server root AND if path is within an app path
-		if ( strpos($path, $this->serverRoot) === -1 && $appWebPath = \OC_App::getAppWebPath($app) ) {
+		if ( !strpos($path, $serverRoot) && $appWebPath = \OC_App::getAppWebPath($appName) ) {
 			// Get the file path within the app directory
-			$appDirectoryPath = explode($app, $path)[1];
+			$appDirectoryPath = explode($appName, $path)[1];
 			// Remove the webroot
-			return str_replace(\OC::$WEBROOT, '', $appWebPath.$appDirectoryPath);
+			return str_replace($webRoot, '', $appWebPath.$appDirectoryPath);
 		}
-		return \OC::$WEBROOT.substr($path, strlen($this->serverRoot));
+		return $webRoot.substr($path, strlen($serverRoot));
 	}
 }
diff --git a/tests/lib/Template/SCSSCacherTest.php b/tests/lib/Template/SCSSCacherTest.php
index 27d427aa3483bd174fffbe978d8e10b3cd791c66..6ecfc0e7aa16ffab181f53ab0dfb0e730af37b5f 100644
--- a/tests/lib/Template/SCSSCacherTest.php
+++ b/tests/lib/Template/SCSSCacherTest.php
@@ -384,4 +384,41 @@ class SCSSCacherTest extends \Test\TestCase {
 		$this->assertEquals(substr($result, 1), $actual);
 	}
 
+	public function dataGetWebDir() {
+		return [
+			['/http/core/css', 'core', '', '/http', '/core/css'],
+			['/http/apps/test/css', 'test', '', '/http', '/apps/test/css'],
+			['/http/nextcloud/core/css', 'core', '/nextcloud', '/http/nextcloud', '/nextcloud/core/css'],
+			['/http/nextcloud/apps/test/css', 'test', '/nextcloud', '/http/nextcloud', '/nextcloud/apps/test/css'],
+			['/srv/apps2/test/css', 'test', '', '/http', '/apps2/test/css'],
+			['/srv/apps2/test/css', 'test', '/nextcloud', '/http/nextcloud', '/apps2/test/css']
+		];
+	}
+
+	private function randomString() {
+		return sha1(uniqid(mt_rand(), true));
+	}
+
+	/**
+	 * @param $path
+	 * @param $appName
+	 * @param $webRoot
+	 * @param $serverRoot
+	 * @dataProvider dataGetWebDir
+	 */
+	public function testgetWebDir($path, $appName, $webRoot, $serverRoot, $correctWebDir) {
+		$tmpDir = sys_get_temp_dir().'/'.$this->randomString();
+		// Adding fake apps folder and create fake app install
+		\OC::$APPSROOTS[] = [
+			'path' => $tmpDir.'/srv/apps2',
+			'url' => '/apps2',
+			'writable' => false
+		];
+		mkdir($tmpDir.$path, 0777, true);
+		$actual = self::invokePrivate($this->scssCacher, 'getWebDir', [$tmpDir.$path, $appName, $tmpDir.$serverRoot, $webRoot]);
+		$this->assertEquals($correctWebDir, $actual);
+		array_pop(\OC::$APPSROOTS);
+		rmdir($tmpDir.$path);
+	}
+
 }