diff --git a/src/main/java/org/olat/core/gui/components/Window.java b/src/main/java/org/olat/core/gui/components/Window.java
index 26ffcbb1d8843142ae6baafe0b82af0be6506718..ada59dae81e69c54b730408aa2e60e7ef41a3b2d 100644
--- a/src/main/java/org/olat/core/gui/components/Window.java
+++ b/src/main/java/org/olat/core/gui/components/Window.java
@@ -47,6 +47,7 @@ import org.olat.core.gui.UserRequest;
 import org.olat.core.gui.Windows;
 import org.olat.core.gui.components.form.flexible.impl.InvalidRequestParameterException;
 import org.olat.core.gui.components.htmlheader.jscss.CustomCSS;
+import org.olat.core.gui.components.htmlheader.jscss.CustomCSSDelegate;
 import org.olat.core.gui.components.panel.Panel;
 import org.olat.core.gui.control.ChiefController;
 import org.olat.core.gui.control.Controller;
@@ -95,7 +96,7 @@ import org.olat.core.util.component.ComponentVisitor;
  * 
  * @author Felix Jost
  */
-public class Window extends AbstractComponent {
+public class Window extends AbstractComponent implements CustomCSSDelegate {
 	
 	private static final OLog log = Tracing.createLoggerFor(Window.class);
 	private static final DispatchResult NO_DISPATCHRESULT = new DispatchResult(false, false, false);
@@ -843,6 +844,7 @@ public class Window extends AbstractComponent {
 		this.dTabs = dTabs;
 	}
 
+	@Override
 	public CustomCSS getCustomCSS() {
 		return customCSS;
 	}
diff --git a/src/main/java/org/olat/core/gui/components/htmlheader/jscss/CustomCSS.java b/src/main/java/org/olat/core/gui/components/htmlheader/jscss/CustomCSS.java
index 418d18f629f2df24d73c4f6b5240aca4d08fbb4d..119508d36019289ec1ea599f806f604229f455c6 100644
--- a/src/main/java/org/olat/core/gui/components/htmlheader/jscss/CustomCSS.java
+++ b/src/main/java/org/olat/core/gui/components/htmlheader/jscss/CustomCSS.java
@@ -27,7 +27,6 @@ import org.olat.core.dispatcher.mapper.MapperService;
 import org.olat.core.dispatcher.mapper.manager.MapperKey;
 import org.olat.core.gui.control.Disposable;
 import org.olat.core.gui.control.JSAndCSSAdder;
-import org.olat.core.logging.LogDelegator;
 import org.olat.core.util.CodeHelper;
 import org.olat.core.util.UserSession;
 import org.olat.core.util.vfs.VFSContainer;
@@ -46,7 +45,7 @@ import org.olat.core.util.vfs.VFSManager;
  * 
  * @author gnaegi
  */
-public class CustomCSS extends LogDelegator implements Disposable {
+public class CustomCSS implements Disposable {
 
 	private final String relCssFilename;
 	private final String relCssFileIframe;
@@ -91,7 +90,6 @@ public class CustomCSS extends LogDelegator implements Disposable {
 		String fulluri = cssUriMapperKey.getUrl() + relCssFilename;
 		// load CSS after the theme
 		jsAndCssComp.addAutoRemovedCssPathName(fulluri, JSAndCSSAdder.CSS_INDEX_AFTER_THEME);
-		
 	}
 
 	/**
diff --git a/src/main/java/org/olat/core/gui/components/htmlheader/jscss/CustomCSSDelegate.java b/src/main/java/org/olat/core/gui/components/htmlheader/jscss/CustomCSSDelegate.java
new file mode 100644
index 0000000000000000000000000000000000000000..cb970d2bc897b4ee885d8ee17823b55337387933
--- /dev/null
+++ b/src/main/java/org/olat/core/gui/components/htmlheader/jscss/CustomCSSDelegate.java
@@ -0,0 +1,32 @@
+/**
+ * <a href="http://www.openolat.org">
+ * OpenOLAT - Online Learning and Training</a><br>
+ * <p>
+ * Licensed under the Apache License, Version 2.0 (the "License"); <br>
+ * you may not use this file except in compliance with the License.<br>
+ * You may obtain a copy of the License at the
+ * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a>
+ * <p>
+ * Unless required by applicable law or agreed to in writing,<br>
+ * software distributed under the License is distributed on an "AS IS" BASIS, <br>
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br>
+ * See the License for the specific language governing permissions and <br>
+ * limitations under the License.
+ * <p>
+ * Initial code contributed and copyrighted by<br>
+ * frentix GmbH, http://www.frentix.com
+ * <p>
+ */
+package org.olat.core.gui.components.htmlheader.jscss;
+
+/**
+ * 
+ * Initial date: 15 mars 2017<br>
+ * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com
+ *
+ */
+public interface CustomCSSDelegate {
+	
+	public CustomCSS getCustomCSS();
+
+}
diff --git a/src/main/java/org/olat/core/gui/control/generic/iframe/IFrameDeliveryMapper.java b/src/main/java/org/olat/core/gui/control/generic/iframe/IFrameDeliveryMapper.java
index 9a4ffa0e4afb6e5f6fce9c7bfa4237cb0b859723..43ac1cca8d5343a2e236191f7f270caaade266d9 100644
--- a/src/main/java/org/olat/core/gui/control/generic/iframe/IFrameDeliveryMapper.java
+++ b/src/main/java/org/olat/core/gui/control/generic/iframe/IFrameDeliveryMapper.java
@@ -28,6 +28,7 @@ import javax.servlet.http.HttpServletRequest;
 
 import org.olat.core.dispatcher.impl.StaticMediaDispatcher;
 import org.olat.core.dispatcher.mapper.Mapper;
+import org.olat.core.gui.components.htmlheader.jscss.CustomCSSDelegate;
 import org.olat.core.gui.media.MediaResource;
 import org.olat.core.gui.media.NotFoundMediaResource;
 import org.olat.core.gui.media.StringMediaResource;
@@ -75,6 +76,7 @@ public class IFrameDeliveryMapper implements Mapper {
 
 	private String frameId;
 	private String customCssURL;
+	private CustomCSSDelegate customCssDelegate;
 	private String themeBaseUri;
 	private String customHeaderContent;
 	
@@ -169,6 +171,10 @@ public class IFrameDeliveryMapper implements Mapper {
 	public void setCustomCssURL(String customCssURL) {
 		this.customCssURL = customCssURL;
 	}
+	
+	public void setCustomCssDelegate(CustomCSSDelegate customCssDelegate) {
+		this.customCssDelegate = customCssDelegate;
+	}
 
 	@Override
 	public MediaResource handle(String relPath, HttpServletRequest request) {
@@ -325,6 +331,10 @@ public class IFrameDeliveryMapper implements Mapper {
 			if (customCssURL != null) {
 				// add the custom  CSS, e.g. the course css that overrides the standard content css
 				sb.appendCss(customCssURL, "customcss");				
+			} else if(customCssDelegate != null && customCssDelegate.getCustomCSS() != null
+					&& customCssDelegate.getCustomCSS().getCSSURLIFrame() != null) {
+				String  customCssURL = customCssDelegate.getCustomCSS().getCSSURLIFrame();
+				sb.appendCss(customCssURL, "customcss");	
 			}
 		}
 		
diff --git a/src/main/java/org/olat/core/gui/control/generic/iframe/IFrameDisplayController.java b/src/main/java/org/olat/core/gui/control/generic/iframe/IFrameDisplayController.java
index a4447acec8edfceaac3ace1af06fe039258eebf0..dcbc6111adb630a2d59c0756359fac34e2d77f36 100644
--- a/src/main/java/org/olat/core/gui/control/generic/iframe/IFrameDisplayController.java
+++ b/src/main/java/org/olat/core/gui/control/generic/iframe/IFrameDisplayController.java
@@ -433,6 +433,7 @@ public class IFrameDisplayController extends BasicController implements GenericE
 	 * this event gets fired from the TextMarkerController when the user swiches on/off textmarking
 	 * @see org.olat.core.util.event.GenericEventListener#event(org.olat.core.gui.control.Event)
 	 */
+	@Override
 	public void event(Event event) {
 		if (event instanceof MultiUserEvent) {
 			if (event.getCommand().equals("glossaryOn")) {
@@ -440,8 +441,7 @@ public class IFrameDisplayController extends BasicController implements GenericE
 			} else if (event.getCommand().equals("glossaryOff")) {
 				contentMapper.setEnableTextmarking(false);
 			}
-		}
-		else if (event.equals(Window.BEFORE_INLINE_RENDERING)){
+		} else if (event.equals(Window.BEFORE_INLINE_RENDERING)){
 			// Set the custom CSS URL that is used by the current tab or site if
 			// available. The reason why we do this here and not in the constructor is
 			// that during the constructing phase this property is not yet set on the
@@ -449,7 +449,7 @@ public class IFrameDisplayController extends BasicController implements GenericE
 			Window myWindow = getWindowControl().getWindowBackOffice().getWindow();
 			CustomCSS currentCustomCSS = myWindow.getCustomCSS();
 			if (currentCustomCSS != null) {
-				contentMapper.setCustomCssURL(currentCustomCSS.getCSSURLIFrame());
+				contentMapper.setCustomCssDelegate(myWindow);
 			}
 			// done, remove us as listener
 			getWindowControl().getWindowBackOffice().removeCycleListener(this);