Index: src/wp-includes/pluggable.php
===================================================================
--- src/wp-includes/pluggable.php	(revision 31478)
+++ src/wp-includes/pluggable.php	(working copy)
@@ -2142,7 +2142,7 @@
 		$args = array();
 	}
 
-	$args['size']    = $size;
+	$args['size']    = (int) $size;
 	$args['default'] = $default;
 	$args['alt']     = $alt;
 
@@ -2161,8 +2161,9 @@
 	 * @param array             $args          Arguments passed to get_avatar_url(), after processing.
 	 */
 	$avatar = apply_filters( 'pre_get_avatar', null, $id_or_email, $args );
+
 	if ( ! is_null( $avatar ) ) {
-		/** This filter is documented in src/wp-include/pluggable.php */
+		/** This filter is documented in src/wp-includes/pluggable.php */
 		return apply_filters( 'get_avatar', $avatar, $id_or_email, $args['size'], $args['default'], $args['alt'], $args );
 	}
 
@@ -2170,6 +2171,8 @@
 		return false;
 	}
 
+	$url2x = get_avatar_url( $id_or_email, array_merge( $args, array( 'size' => $args['size'] * 2 ) ) );
+
 	$args = get_avatar_data( $id_or_email, $args );
 
 	$url = $args['url'];
@@ -2193,9 +2196,10 @@
 	}
 
 	$avatar = sprintf(
-		"<img alt='%s' src='%s' class='%s' height='%d' width='%d' />",
+		"<img alt='%s' src='%s' srcset='%s' class='%s' height='%d' width='%d' />",
 		esc_attr( $args['alt'] ),
 		esc_url( $url ),
+		esc_attr( "$url 1x, $url2x 2x" ),
 		esc_attr( join( ' ', $class ) ),
 		(int) $args['size'],
 		(int) $args['size']
