Index: wp-includes/meta.php
===================================================================
--- wp-includes/meta.php	(revision 30081)
+++ wp-includes/meta.php	(working copy)
@@ -104,6 +104,7 @@
 	$mid = (int) $wpdb->insert_id;
 
 	wp_cache_delete($object_id, $meta_type . '_meta');
+	_collect_updated_postmeta_post_ids( $object_id );
 
 	/**
 	 * Fires immediately after meta of a specific type is added.
@@ -241,6 +242,7 @@
 		return false;
 
 	wp_cache_delete($object_id, $meta_type . '_meta');
+	_collect_updated_postmeta_post_ids( $object_id );
 
 	/**
 	 * Fires immediately after updating metadata of a specific type.
@@ -389,9 +391,11 @@
 	if ( $delete_all ) {
 		foreach ( (array) $object_ids as $o_id ) {
 			wp_cache_delete($o_id, $meta_type . '_meta');
+			_collect_updated_postmeta_post_ids( $o_id );
 		}
 	} else {
 		wp_cache_delete($object_id, $meta_type . '_meta');
+		_collect_updated_postmeta_post_ids( $object_id );
 	}
 
 	/**
Index: wp-includes/post.php
===================================================================
--- wp-includes/post.php	(revision 30081)
+++ wp-includes/post.php	(working copy)
@@ -5482,6 +5482,59 @@
 }
 
 /**
+ * Internal function that collects all updated post IDs when meta was changed.
+ * 
+ * Modified post date will be updated later on the shutdown hook.
+ * 
+ * @since 4.1
+ * 
+ * @param int $post_id the ID of the modified Post object.
+ */
+function _collect_updated_postmeta_post_ids( $post_id ) {
+	global $updated_post_ids;
+	
+	if ( empty( $updated_post_ids ) ) {
+		$updated_post_ids = array();
+	} 
+	if ( ! in_array( $post_id, $updated_post_ids ) ) {
+		$updated_post_ids[] = $post_id;
+	}
+}
+
+/**
+ * Helper function for updating the post modified date.
+ * 
+ * Iterates over all post IDs updated during the request when meta has been changed.
+ *  
+ * @since 4.1
+ * 
+ */
+function update_post_modified_dates() {
+	global $updated_post_ids;
+	
+	// Check whether posts' metadata has been changed during the request
+	if ( ! empty( $updated_post_ids ) && is_array( $updated_post_ids ) ) {
+		$post_modified     = current_time( 'mysql' );
+		$post_modified_gmt = current_time( 'mysql', 1 );
+		global $wpdb;
+		
+		$updated_fields = array( 
+			'post_modified' => $post_modified,
+			'post_modified_gmt' => $post_modified_gmt
+		);
+		
+		// Update the post_modified dates for each modified post
+		foreach ( $updated_post_ids as $post_id ) {
+			$where = array( 'ID' => $post_id );
+			$wpdb->update( $wpdb->posts, $updated_fields, $where );
+			
+			clean_post_cache( $post_id );
+		}
+	}
+}
+add_action( 'shutdown', 'update_post_modified_dates' );
+
+/**
  * Call major cache updating functions for list of Post objects.
  *
  * @since 1.5.0
