diff --git a/src/main/java/org/olat/core/commons/editor/htmleditor/HTMLEditorController.java b/src/main/java/org/olat/core/commons/editor/htmleditor/HTMLEditorController.java
index b27531ad47589ff0b756a09d0d23ddf5b5e862d5..1ed0e21b63e8bdcddf39f5f97162962cc132725d 100644
--- a/src/main/java/org/olat/core/commons/editor/htmleditor/HTMLEditorController.java
+++ b/src/main/java/org/olat/core/commons/editor/htmleditor/HTMLEditorController.java
@@ -308,7 +308,7 @@ public class HTMLEditorController extends FormBasicController {
 			//
 			// Add resize handler
 			RichTextConfiguration editorConfiguration = htmlElement.getEditorConfiguration(); 
-			editorConfiguration.addOnInitCallbackFunction("b_resizetofit_htmleditor");
+			editorConfiguration.addOnInitCallbackFunction("b_resizetofit_htmleditor()");
 			editorConfiguration.enableEditorHeight();
 			if(StringHelper.containsNonWhitespace(mediaPath)) {
 				editorConfiguration.setFileBrowserUploadRelPath(mediaPath);
diff --git a/src/main/java/org/olat/core/commons/editor/htmleditor/_content/htmleditor.html b/src/main/java/org/olat/core/commons/editor/htmleditor/_content/htmleditor.html
index ea676f58f9c93d1029e43ee60a64310aa3b3c383..c038d22ed8897f1f992abfd908fe5881be543051 100644
--- a/src/main/java/org/olat/core/commons/editor/htmleditor/_content/htmleditor.html
+++ b/src/main/java/org/olat/core/commons/editor/htmleditor/_content/htmleditor.html
@@ -14,29 +14,51 @@
 #if ($r.available("rtfElement"))
 	<script>
 	function b_resizetofit_htmleditor() {
-		var height = o_viewportHeight() / 3 * 2;
+		var mceEditEl = jQuery('.mce-edit-area');
+		if (mceEditEl.lengh == 0) {
+			return;
+		}
+		var availableHeight = window.innerHeight;
+		// minus the mce top space
+		editorWrapperEl = jQuery(mceEditEl[0]);
+		availableHeight -= editorWrapperEl.offset().top;
+		// minus the mce status bar
+		var mceStatusEl = jQuery('.mce-statusbar');
+		if (mceStatusEl.lengh == 0) {
+			return;
+		}
+		availableHeight -= jQuery(mceStatusEl[0]).outerHeight();
+		// minus the oo save buttons
+		var saveEl = jQuery('#o_save');
+		if (saveEl.lengh == 0) {
+			return;
+		}
+		availableHeight -= jQuery(saveEl[0]).outerHeight();
+		// minus the oo footer
+		var footerEl = jQuery('#o_footer_wrapper');
+		if (footerEl != null) {
+			availableHeight -= footerEl.outerHeight();
+		}
+		// use new height in editor
 		var edi = jQuery("#$f.getItemId("rtfElement")_ifr");
 		if (edi) {		
 			## use calculated height
-			edi.height(parseInt(height)+"px");		
+			edi.height(parseInt(availableHeight)+"px");		
 		} else {
 			## editor not available anymore - remove listener
 			Event.stopObserving(window, 'resize', b_resizetofit_htmleditor);
 		}
-		## reuse for next start of html editor
-		var toolbar = jQuery("#$f.getItemId("rtfElement")_tbl tr.mceFirst");
-		if (toolbar) height = height + toolbar.height();
-		var footer = jQuery("#$f.getItemId("rtfElement")_tbl tr.mceLast");
-		if (footer) height = height + footer.height();
-		o_info.optimized_htmleditor_height = height;
+		// keep for later reusage
+		o_info.optimized_htmleditor_height = availableHeight;
+		return availableHeight;
 	}
-	## execute once and attach handler on window resize 
+	## attach handler on window resize 
 	jQuery(window).resize(b_resizetofit_htmleditor);	
 
 	## method to use the last editor height as a preset to reduce flickering.
 	function b_initialEditorHeight() {
 		if (o_info.optimized_htmleditor_height) return o_info.optimized_htmleditor_height;
-		else return 400;
+		else return window.innerHeight - 200;
 	}
 	
 	## Check for dirtyness and mark buttons accordingly, each second
diff --git a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/richText/RichTextElementRenderer.java b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/richText/RichTextElementRenderer.java
index db9bbbcb63e3eb9a915e0852364df1fb7d54ba05..a97883216fea82364a796c18c18d19e413658f1b 100644
--- a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/richText/RichTextElementRenderer.java
+++ b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/richText/RichTextElementRenderer.java
@@ -227,9 +227,11 @@ class RichTextElementRenderer extends DefaultComponentRenderer {
 			sb.append("    height: ").append(currentHeight).append(",\n");
 		}
 		sb.append("    setup: function(ed){\n")
-		  .append("      ed.on('init', function(e) {\n")
-		  .append("        ").append(onInit.get(0).replace(".curry(", "(")).append(";\n")
-		  .append("      });\n")
+		  .append("      ed.on('init', function(e) {\n");
+		for (String initFunction : onInit) {
+			sb.append("        ").append(initFunction.replace(".curry(", "(")).append(";\n");
+		}
+		sb.append("      });\n")
 		  .append("      ed.on('change', function(e) {\n")
 		  .append("        BTinyHelper.triggerOnChange('").append(domID).append("');\n")
 		  .append("      });\n")