diff --git src/wp-admin/js/customize-controls.js src/wp-admin/js/customize-controls.js
index 739b962..d31dfd5 100644
--- src/wp-admin/js/customize-controls.js
+++ src/wp-admin/js/customize-controls.js
@@ -68,13 +68,14 @@
 		params = params || {};
 		focus = function () {
 			var focusContainer;
-			if ( construct.extended( api.Panel ) && construct.expanded() ) {
-				focusContainer = construct.container.find( '.control-panel-content:first' );
+			if ( construct.expanded && construct.expanded() ) {
+				focusContainer = construct.container.find( 'ul:first' );
 			} else {
 				focusContainer = construct.container;
 			}
-			focusContainer.find( ':focusable:first' ).focus();
-			focusContainer[0].scrollIntoView( true );
+
+			// Note that we can't use :focusable due to a jQuery UI issue. See: https://github.com/jquery/jquery-ui/pull/1583
+			focusContainer.find( 'input, select, textarea, button, object, a[href], [tabindex]' ).filter( ':visible' ).first().focus();
 		};
 		if ( params.completeCallback ) {
 			completeCallback = params.completeCallback;
@@ -586,7 +587,7 @@
 				overlay = section.container.closest( '.wp-full-overlay' ),
 				backBtn = section.container.find( '.customize-section-back' ),
 				sectionTitle = section.container.find( '.accordion-section-title' ).first(),
-				expand;
+				expand, sizing;
 
 			if ( expanded && ! section.container.hasClass( 'open' ) ) {
 
@@ -594,7 +595,7 @@
 					expand = args.completeCallback;
 				} else {
 					container.scrollTop( 0 );
-					expand = function () {
+					sizing = function() {
 						var matchMedia, offset;
 						matchMedia = window.matchMedia || window.msMatchMedia;
 						offset = 90; // 45px for customize header actions + 45px for footer actions.
@@ -603,19 +604,22 @@
 						if ( matchMedia && matchMedia( '(max-width: 640px)' ).matches ) {
 							offset = 45;
 						}
-
-						section.container.addClass( 'open' );
-						overlay.addClass( 'section-open' );
 						position = content.offset().top;
 						scroll = container.scrollTop();
-						content.css( 'margin-top', ( 45 - position - scroll ) );
+						content.css( 'margin-top', ( $( '#customize-header-actions' ).height() - position - scroll ) );
 						content.css( 'height', ( window.innerHeight - offset ) );
+					};
+					expand = function () {
+						section.container.addClass( 'open' );
+						overlay.addClass( 'section-open' );
 						sectionTitle.attr( 'tabindex', '-1' );
 						backBtn.attr( 'tabindex', '0' );
+						sizing();
 						backBtn.focus();
 						if ( args.completeCallback ) {
 							args.completeCallback();
 						}
+						$( window ).on( 'resize.customizer-section', _.debounce( sizing, 100 ) );
 					};
 				}
 
@@ -639,7 +643,7 @@
 			} else if ( ! expanded && section.container.hasClass( 'open' ) ) {
 				section.container.removeClass( 'open' );
 				overlay.removeClass( 'section-open' );
-				content.css( 'margin-top', 'inherit' );
+				content.css( 'margin-top', '' );
 				container.scrollTop( 0 );
 				backBtn.attr( 'tabindex', '-1' );
 				sectionTitle.attr( 'tabindex', '0' );
@@ -647,6 +651,7 @@
 				if ( args.completeCallback ) {
 					args.completeCallback();
 				}
+				$( window ).off( 'resize.customizer-section' );
 			} else {
 				if ( args.completeCallback ) {
 					args.completeCallback();
@@ -2602,7 +2607,11 @@
 				_( constructs ).each( function ( activeConstructs, type ) {
 					api[ type ].each( function ( construct, id ) {
 						var active = !! ( activeConstructs && activeConstructs[ id ] );
-						construct.active( active );
+						if ( active ) {
+							construct.activate();
+						} else {
+							construct.deactivate();
+						}
 					} );
 				} );
 			} );
