diff --git src/wp-includes/css/media-views.css src/wp-includes/css/media-views.css
index c339723..787a74f 100644
--- src/wp-includes/css/media-views.css
+++ src/wp-includes/css/media-views.css
@@ -1807,7 +1807,7 @@
 	left: 440px;
 }
 
-.advanced,
+.advanced-section,
 .link-settings {
 	margin-top: 10px;
 }
diff --git src/wp-includes/js/media-views.js src/wp-includes/js/media-views.js
index 5713cf1..3273b91 100644
--- src/wp-includes/js/media-views.js
+++ src/wp-includes/js/media-views.js
@@ -32,6 +32,13 @@
 	}());
 
 	/**
+	 * A shared event bus used to provide hooks into
+	 * the media workflows that 3rd-party devs can use to hook
+	 * in.
+	 */
+	media.hooks = _.extend( {}, Backbone.Events );
+
+	/**
 	 * Makes it easier to bind events using transitions.
 	 *
 	 * @param {string} selector
@@ -6256,23 +6263,25 @@
 			if ( this.model.attachment && 'pending' === this.model.dfd.state() ) {
 				this.model.dfd.done( function() {
 					media.view.Settings.AttachmentDisplay.prototype.render.apply( self, args );
-					self.resetFocus();
-					self.toggleLinkSettings();
+					self.postRender();
 				} ).fail( function() {
 					self.model.attachment = false;
 					media.view.Settings.AttachmentDisplay.prototype.render.apply( self, args );
-					self.resetFocus();
-					self.toggleLinkSettings();
+					self.postRender();
 				} );
 			} else {
 				media.view.Settings.AttachmentDisplay.prototype.render.apply( this, arguments );
-				setTimeout( function() { self.resetFocus(); }, 10 );
-				self.toggleLinkSettings();
 			}
 
 			return this;
 		},
 
+		postRender: function() {
+			setTimeout( _.bind( this.resetFocus, this ), 10 );
+			this.toggleLinkSettings();
+			this.trigger( 'post-render' );
+		},
+
 		resetFocus: function() {
 			this.$( '.link-to-custom' ).blur();
 			this.$( '.embed-media-settings' ).scrollTop( 0 );
@@ -6323,14 +6332,14 @@
 		},
 
 		toggleAdvanced: function( event ) {
-			var $advanced = $( event.target ).closest( '.advanced' );
+			var $advanced = $( event.target ).closest( '.advanced-section' );
 			event.preventDefault();
 			if ( $advanced.hasClass('advanced-visible') ) {
 				$advanced.removeClass('advanced-visible');
-				$advanced.find('div').addClass('hidden');
+				$advanced.find('.advanced-settings').addClass('hidden');
 			} else {
 				$advanced.addClass('advanced-visible');
-				$advanced.find('div').removeClass('hidden');
+				$advanced.find('.advanced-settings').removeClass('hidden');
 			}
 		},
 
diff --git src/wp-includes/js/tinymce/plugins/wpeditimage/plugin.js src/wp-includes/js/tinymce/plugins/wpeditimage/plugin.js
index a6c3502..f1b3175 100644
--- src/wp-includes/js/tinymce/plugins/wpeditimage/plugin.js
+++ src/wp-includes/js/tinymce/plugins/wpeditimage/plugin.js
@@ -201,6 +201,7 @@ tinymce.PluginManager.add( 'wpeditimage', function( editor ) {
 			metadata.linkClassName = link.className;
 		}
 
+
 		return metadata;
 	}
 
@@ -338,23 +339,40 @@ tinymce.PluginManager.add( 'wpeditimage', function( editor ) {
 			dom.remove( captionNode );
 		}
 
+		if ( wp.media.hooks ) {
+			wp.media.hooks.trigger( 'editor:image-update', {
+				editor: editor,
+				metadata: imageData,
+				image: imageNode
+			} );
+		}
+
 		editor.nodeChanged();
 		// Refresh the toolbar
 		addToolbar( imageNode );
 	}
 
 	function editImage( img ) {
-		var frame, callback;
+		var frame, callback, metadata;
 
 		if ( typeof wp === 'undefined' || ! wp.media ) {
 			editor.execCommand( 'mceImage' );
 			return;
 		}
 
+		metadata = extractImageData( img );
+
+		// Manipulate the metadata by reference that is fed into the PostImage model used in the media modal
+		wp.media.hooks.trigger( 'editor:image-edit', {
+			editor: editor,
+			metadata: metadata,
+			image: img
+		} );
+
 		frame = wp.media({
 			frame: 'image',
 			state: 'image-details',
-			metadata: extractImageData( img )
+			metadata: metadata
 		} );
 
 		callback = function( imageData ) {
@@ -373,6 +391,8 @@ tinymce.PluginManager.add( 'wpeditimage', function( editor ) {
 		});
 
 		frame.open();
+
+		wp.media.hooks.trigger( 'editor:frame-open', { frame: frame } );
 	}
 
 	function removeImage( node ) {
diff --git src/wp-includes/media-template.php src/wp-includes/media-template.php
index a284d8d..5a49ae3 100644
--- src/wp-includes/media-template.php
+++ src/wp-includes/media-template.php
@@ -755,28 +755,32 @@ function wp_print_media_templates() {
 						</select>
 						<input type="text" class="link-to-custom" data-setting="linkUrl" />
 					</div>
-					<div class="advanced">
+					<div class="advanced-section">
 						<h3><a class="advanced-toggle" href="#"><?php _e('Advanced Options'); ?></a></h3>
-						<div class="hidden">
-							<label class="setting title-text">
-								<span><?php _e('Image Title Attribute'); ?></span>
-								<input type="text" data-setting="title" value="{{ data.model.title }}" />
-							</label>
-							<label class="setting extra-classes">
-								<span><?php _e('Image CSS Class'); ?></span>
-								<input type="text" data-setting="extraClasses" value="{{ data.model.extraClasses }}" />
-							</label>
-							<div class="setting link-target">
-								<label><input type="checkbox" data-setting="linkTargetBlank" value="_blank" <# if ( data.model.linkTargetBlank ) { #>checked="checked"<# } #>><?php _e( 'Open link in a new window/tab' ); ?></label>
+						<div class="advanced-settings hidden">
+							<div class="advanced-image">
+								<label class="setting title-text">
+									<span><?php _e('Image Title Attribute'); ?></span>
+									<input type="text" data-setting="title" value="{{ data.model.title }}" />
+								</label>
+								<label class="setting extra-classes">
+									<span><?php _e('Image CSS Class'); ?></span>
+									<input type="text" data-setting="extraClasses" value="{{ data.model.extraClasses }}" />
+								</label>
+							</div>
+							<div class="advanced-link">
+								<div class="setting link-target">
+									<label><input type="checkbox" data-setting="linkTargetBlank" value="_blank" <# if ( data.model.linkTargetBlank ) { #>checked="checked"<# } #>><?php _e( 'Open link in a new window/tab' ); ?></label>
+								</div>
+								<label class="setting link-rel">
+									<span><?php _e('Link Rel'); ?></span>
+									<input type="text" data-setting="linkRel" value="{{ data.model.linkClassName }}" />
+								</label>
+								<label class="setting link-class-name">
+									<span><?php _e('Link CSS Class'); ?></span>
+									<input type="text" data-setting="linkClassName" value="{{ data.model.linkClassName }}" />
+								</label>
 							</div>
-							<label class="setting link-rel">
-								<span><?php _e('Link Rel'); ?></span>
-								<input type="text" data-setting="linkRel" value="{{ data.model.linkClassName }}" />
-							</label>
-							<label class="setting link-class-name">
-								<span><?php _e('Link CSS Class'); ?></span>
-								<input type="text" data-setting="linkClassName" value="{{ data.model.linkClassName }}" />
-							</label>
 						</div>
 					</div>
 				</div>
