Index: src/wp-admin/includes/class-wp-press-this.php
===================================================================
--- src/wp-admin/includes/class-wp-press-this.php	(revision 31793)
+++ src/wp-admin/includes/class-wp-press-this.php	(working copy)
@@ -18,6 +18,8 @@
 
 	private $embeds = array();
 
+	private $url = '';
+
 	/**
 	 * Constructor.
 	 *
@@ -352,7 +354,22 @@
 			return '';
 		}
 
-		return esc_url_raw( $url, array( 'http', 'https' ) );
+		if ( ! preg_match( '/^https?:/', $url ) && ! empty( $this->url ) ) {
+			if ( preg_match( '/^[\/]{1}[^\/]+/', $url ) ) {
+				// From root: /blah
+				$url = preg_replace( '/^(https?:\/\/[^\/]+)(\/.*)?$/', '\1', $this->url ) . $url;
+			} else if ( preg_match( '/^[\/]{2}[^\/]+/', $url ) ) {
+				// Protocol relative: //blah.com/blah
+				$url = preg_replace( '/^(https?:)\/\/.+$/', '\1', $this->url ) . $url;
+			} else {
+				// Relative, or different protocol than http, set to already valid $this->url
+				$url = $this->url;
+			}
+		}
+
+		$url = esc_url_raw( $url, array( 'http', 'https' ) );
+
+		return $url;
 	}
 
 	private function _limit_img( $src ) {
@@ -597,6 +614,9 @@
 
 			if ( 'u' === $key ) {
 				$value = $this->_limit_url( $value );
+				if ( preg_match( '/^https?:/', $value ) ) {
+					$this->url = $value;
+				}
 			} else {
 				$value = $this->_limit_string( $value );
 			}
