Index: post.php
===================================================================
--- post.php	(revision 17107)
+++ post.php	(working copy)
@@ -2458,9 +2458,13 @@
 		$post_name = sanitize_title($post_name);
 	}
 
-	// If the post date is empty (due to having been new or a draft) and status is not 'draft' or 'pending', set date to now
-	if ( empty($post_date) || '0000-00-00 00:00:00' == $post_date )
-		$post_date = current_time('mysql');
+	// If the post date is empty, set date to now or from GMT if available
+	if ( empty($post_date) || '0000-00-00 00:00:00' == $post_date ) {
+		if ( empty($post_date_gmt) || '0000-00-00 00:00:00' == $post_date_gmt )
+			$post_date = current_time('mysql');
+		else
+			$post_date = get_date_from_gmt($post_date_gmt);
+	}
 
 	if ( empty($post_date_gmt) || '0000-00-00 00:00:00' == $post_date_gmt ) {
 		if ( !in_array( $post_status, array( 'draft', 'pending', 'auto-draft' ) ) )
@@ -2469,7 +2473,7 @@
 			$post_date_gmt = '0000-00-00 00:00:00';
 	}
 
-	if ( $update || '0000-00-00 00:00:00' == $post_date ) {
+	if ( $update ) {
 		$post_modified     = current_time( 'mysql' );
 		$post_modified_gmt = current_time( 'mysql', 1 );
 	} else {
