diff --git a/cms/static/js/views/modals/edit_xblock.js b/cms/static/js/views/modals/edit_xblock.js
index 0e5e83fbefa5d5f9750621160a5f6dd167bba2f8..f8f5cef52bc5fc8cd3c50885e959943696a0ecc3 100644
--- a/cms/static/js/views/modals/edit_xblock.js
+++ b/cms/static/js/views/modals/edit_xblock.js
@@ -135,13 +135,14 @@ define(["jquery", "underscore", "gettext", "js/views/modals/base_modal",
                 var parent = $(event.target.parentElement),
                     mode = parent.data('mode');
                 event.preventDefault();
+                this.selectMode(mode);
                 var $cheatsheet = $('.simple-editor-cheatsheet');
-                if ($cheatsheet.hasClass("shown")) {
-                    $(".CodeMirror").removeAttr("style");
-                    $(".modal-content").removeAttr("style");
-                    $cheatsheet.removeClass('shown');
+                if ($cheatsheet.length == 0){
+                    $cheatsheet = $('.simple-editor-open-ended-cheatsheet');
                 }
-                this.selectMode(mode);
+                $(".CodeMirror").css({"overflow": "none"});
+                $(".modal-content").removeAttr("style");
+                $cheatsheet.removeClass('shown');
             },
 
             selectMode: function(mode) {
diff --git a/common/lib/xmodule/xmodule/js/spec/combinedopenended/edit_spec.coffee b/common/lib/xmodule/xmodule/js/spec/combinedopenended/edit_spec.coffee
index d859a59ddaefb135de6d5f5fe5005a572e33fc87..cb1efd5a9425ed298d71a4f77dd06d73321316a6 100644
--- a/common/lib/xmodule/xmodule/js/spec/combinedopenended/edit_spec.coffee
+++ b/common/lib/xmodule/xmodule/js/spec/combinedopenended/edit_spec.coffee
@@ -20,6 +20,18 @@ describe 'OpenEndedMarkdownEditingDescriptor', ->
       expect(saveResult.nullout).toEqual(['markdown'])
       expect(saveResult.data).toEqual('xml only')
 
+  describe 'advanced editor opens correctly', ->
+    it 'click on advanced editor should work', ->
+      loadFixtures 'combinedopenended-with-markdown.html'
+      @descriptor = new OpenEndedMarkdownEditingDescriptor($('.combinedopenended-editor'))
+      spyOn(@descriptor, 'confirmConversionToXml').andReturn(true)
+      expect(@descriptor.confirmConversionToXml).not.toHaveBeenCalled()
+      e = jasmine.createSpyObj('e', [ 'preventDefault' ])
+      @descriptor.onShowXMLButton(e)
+      expect(e.preventDefault).toHaveBeenCalled()
+      expect(@descriptor.confirmConversionToXml).toHaveBeenCalled()
+      expect($('.editor-bar').length).toEqual(0)
+
   describe 'insertPrompt', ->
     it 'inserts the template if selection is empty', ->
       revisedSelection = OpenEndedMarkdownEditingDescriptor.insertPrompt('')
diff --git a/common/lib/xmodule/xmodule/js/spec/problem/edit_spec.coffee b/common/lib/xmodule/xmodule/js/spec/problem/edit_spec.coffee
index e1bdb1e6e0f17a814bd7621ca9ffe2e257d87188..f59a36baf92c24de64b6835abe7ea888f39c9e23 100644
--- a/common/lib/xmodule/xmodule/js/spec/problem/edit_spec.coffee
+++ b/common/lib/xmodule/xmodule/js/spec/problem/edit_spec.coffee
@@ -20,6 +20,18 @@ describe 'MarkdownEditingDescriptor', ->
       expect(saveResult.nullout).toEqual(['markdown'])
       expect(saveResult.data).toEqual('xml only')
 
+  describe 'advanced editor opens correctly', ->
+    it 'click on advanced editor should work', ->
+      loadFixtures 'problem-with-markdown.html'
+      @descriptor = new MarkdownEditingDescriptor($('.problem-editor'))
+      spyOn(@descriptor, 'confirmConversionToXml').andReturn(true)
+      expect(@descriptor.confirmConversionToXml).not.toHaveBeenCalled()
+      e = jasmine.createSpyObj('e', [ 'preventDefault' ])
+      @descriptor.onShowXMLButton(e)
+      expect(e.preventDefault).toHaveBeenCalled()
+      expect(@descriptor.confirmConversionToXml).toHaveBeenCalled()
+      expect($('.editor-bar').length).toEqual(0)
+
   describe 'insertMultipleChoice', ->
     it 'inserts the template if selection is empty', ->
       revisedSelection = MarkdownEditingDescriptor.insertMultipleChoice('')
diff --git a/common/lib/xmodule/xmodule/js/src/combinedopenended/edit.coffee b/common/lib/xmodule/xmodule/js/src/combinedopenended/edit.coffee
index 80efa37fdf356e3351d28b08af5e8c44942fbd27..9434fa7e0201e118eaf5d609284bf33833088e71 100644
--- a/common/lib/xmodule/xmodule/js/src/combinedopenended/edit.coffee
+++ b/common/lib/xmodule/xmodule/js/src/combinedopenended/edit.coffee
@@ -87,6 +87,8 @@ Write a persuasive essay to a newspaper reflecting your views on censorship in l
   ###
   onShowXMLButton: (e) =>
     e.preventDefault();
+    if @cheatsheet != undefined
+      @addRemoveCheatsheetCSS()
     if @confirmConversionToXml()
       @createXMLEditor(OpenEndedMarkdownEditingDescriptor.markdownToXml(@markdown_editor.getValue()))
       # Need to refresh to get line numbers to display properly (and put cursor position to 0)
@@ -131,8 +133,23 @@ Write a persuasive essay to a newspaper reflecting your views on censorship in l
       @cheatsheet = $($('#simple-editor-open-ended-cheatsheet').html())
       $(@markdown_editor.getWrapperElement()).append(@cheatsheet)
 
+    @addRemoveCheatsheetCSS()
+
     setTimeout (=> @cheatsheet.toggleClass('shown')), 10
 
+
+  ###
+  Function to add/remove CSS for cheatsheet.
+  ###
+  addRemoveCheatsheetCSS: () =>
+    if !@cheatsheet.hasClass("shown")
+      $(".CodeMirror").css({"overflow": "visible"})
+      $(".modal-content").css({"overflow-y": "visible", "overflow-x": "visible"})
+    else
+      $(".CodeMirror").css({"overflow": ""})
+      $(".modal-content").removeAttr("style")
+
+
   ###
   Stores the current editor and hides the one that is not displayed.
   ###