diff --git a/includes/class-syndication-wp-xmlrpc-client.php b/includes/class-syndication-wp-xmlrpc-client.php
index d35862d4e0ab7f4e2410b6d1c6c4ee0601fd1c0f..dccde252cd964f8fec898f1c19f5f0c3fc34cb9e 100644
--- a/includes/class-syndication-wp-xmlrpc-client.php
+++ b/includes/class-syndication-wp-xmlrpc-client.php
@@ -111,9 +111,13 @@ class Syndication_WP_XMLRPC_Client extends WP_HTTP_IXR_Client implements Syndica
 
 		// This filter can be used to exclude or alter posts during a content push
 		$post = apply_filters( 'syn_xmlrpc_push_filter_new_post', $post, $post_ID );
-		if ( false === $post )
+		if ( false === $post ) {
 			return true;
+		}
 		
+		//Uploads all gallery images to the remote site and replaces [gallery] tags with new IDs
+		$post['post_content'] = $this->syndicate_gallery_images( $post['post_content'] );
+
 		// rearranging arguments
 		$args = array();
 		$args['post_title']	 = $post['post_title'];
@@ -158,8 +162,9 @@ class Syndication_WP_XMLRPC_Client extends WP_HTTP_IXR_Client implements Syndica
 
 		// This filter can be used to exclude or alter posts during a content push
 		$post = apply_filters( 'syn_xmlrpc_push_filter_edit_post', $post, $post_ID );
-		if ( false === $post )
+		if ( false === $post ) {
 			return true;
+		}
 
 		$remote_post = $this->get_remote_post( $remote_post_id );
 
@@ -173,6 +178,9 @@ class Syndication_WP_XMLRPC_Client extends WP_HTTP_IXR_Client implements Syndica
 			$args['custom_fields'][] = array( 'id' => $custom_field['id'] );
 		}
 		
+		//Uploads all gallery images to the remote site and replaces [gallery] tags with new IDs
+		$post['post_content'] = $this->syndicate_gallery_images( $post['post_content'] );
+
 		// rearranging arguments
 		$args['post_title']	 = $post['post_title'];
 		$args['post_content']   = $post['post_content'];
@@ -206,6 +214,78 @@ class Syndication_WP_XMLRPC_Client extends WP_HTTP_IXR_Client implements Syndica
 		return $remote_post_id;
 	}
 
+	/**
+	* Utility method to Syndicate [gallery] shortcode images
+	* It needs to upload images and inject new IDs into the post_content
+ 	* @access private
+ 	* @uses $shortcode_tags global variable
+ 	* @param string $post_content - post to be syndicated
+ 	* @return string $post_content - post content with replaced gallery shortcodes
+	*/
+	private function syndicate_gallery_images( $post_content ) {
+		$attachment_ids = array();
+		global $shortcode_tags;
+		//overwrite global shortcodes for gallery only and then revert back to original
+		$temp = $shortcode_tags;
+		$shortcode_tags = array( 'gallery' => 'gallery_shortcode' );
+		$pattern = get_shortcode_regex();
+		$shortcode_tags = $temp;
+
+		$image_ids = array();
+		$new_image_ids = array();
+		 
+		if ( preg_match_all( '/' . $pattern . '/s', $post_content, $matches ) ) {
+		  $count=count( $matches[3] );		  
+		  for ( $i = 0; $i < $count; $i++ ) {
+		    $atts = shortcode_parse_atts( $matches[3][$i] );
+		    if ( isset( $atts['ids'] ) ) {
+		      $attachment_ids = explode( ',', $atts['ids'] );
+		      $image_ids[$i] = $attachment_ids;
+		    }
+		  }
+		}
+
+		if( ! empty( $image_ids ) ) {
+			foreach ( $image_ids as $key => $gallery_ids ) {
+				foreach ( $gallery_ids as $index => $id ) {
+					//do upload, get new ID back
+					list( $thumbnail_url ) = wp_get_attachment_image_src( $id, 'full' );
+					$thumbnail_post_data = get_post($id);
+					$thumbnail_alt_text = trim( get_post_meta( $id, '_wp_attachment_image_alt', true ) );
+
+					$result = $this->query(
+						'syndication.postGalleryImage',
+						'1',
+						$this->username,
+						$this->password,
+						$thumbnail_url,
+						$thumbnail_post_data,
+						$thumbnail_alt_text
+					);
+
+					if ( ! $result ) {
+						return new WP_Error( $this->getErrorCode(), $this->getErrorMessage() );
+					}
+					$new_image_ids[$key][$index] = (int) $this->getResponse();
+				}
+			}
+		}
+
+		//new IDs needs to be injected into the post content
+		//replace old gallery code with a new one
+		$lenght = count( $matches[0] );
+		for ( $i = 0; $i < $lenght; $i++ ) {
+			$shortcode = $matches[0][$i];
+			//WP regex matches attribute with leading space, required here
+			$attribute = ' ids="' . implode( ',', $image_ids[$i] ) . '"';
+			$new_attribute = ' ids="' . implode( ',', $new_image_ids[$i] ) . '"';
+			$new_shortcode = str_replace( $attribute, $new_attribute, $shortcode );
+			$post_content = str_replace( $shortcode, $new_shortcode, $post_content );
+		}
+
+		return $post_content;
+	}
+
 	public function delete_post( $remote_post_id ) {
 
 		$result = $this->query(
@@ -425,6 +505,8 @@ class Syndication_WP_XMLRPC_Client_Extensions {
 	public static function push_syndicate_methods( $methods ) {
         $methods['syndication.addThumbnail']    = array( __CLASS__, 'xmlrpc_add_thumbnail' );
         $methods['syndication.deleteThumbnail']    = array( __CLASS__, 'xmlrpc_delete_thumbnail' );
+        $methods['syndication.postGalleryImage'] = array(__CLASS__, 'xmlrpc_post_gallery_images');
+
 		return $methods;
 	}
 
@@ -534,6 +616,79 @@ class Syndication_WP_XMLRPC_Client_Extensions {
 
 	}
 
+	/**
+	* Upload Image for the gallery shortcode
+	* @uses $wp_xmlrpc_server
+	* @param array $args Contains necessary parameters for XMLRCP call: user, paasword, image data
+	* @return integer $thumbnail_id New ID of the newly uploaded image to the remote site
+	*/
+	public static function xmlrpc_post_gallery_images( $args ) {
+		global $wp_xmlrpc_server;
+
+		$wp_xmlrpc_server->escape( $args );
+
+		$blog_id             = (int) $args[0];
+		$username            = $args[1];
+		$password            = $args[2];
+		$thumbnail_url       = esc_url_raw( $args[3] );
+		$thumbnail_post_data = $args[4];
+		$thumbnail_alt_text  = $args[5];
+
+		$thumbnail_raw = wp_remote_retrieve_body( wp_remote_get( $thumbnail_url ) );
+		if ( ! $thumbnail_raw ) {
+			return new IXR_Error( 500, __( 'Sorry, the image URL provided was incorrect.', 'syndication' ) );
+		}
+
+		$thumbnail_filename = basename( $thumbnail_url );
+		$thumbnail_type = wp_check_filetype( $thumbnail_filename );
+
+		$args = array(
+			$blog_id,
+			$username,
+			$password,
+			array(
+				'name' => $thumbnail_filename,
+				'type' => $thumbnail_type['type'],
+				'bits' => $thumbnail_raw,
+				'overwrite' => false,
+			),
+		);
+
+		// Note: Leting mw_newMediaObject handle our auth and cap checks
+		$image = $wp_xmlrpc_server->mw_newMediaObject( $args );
+		if ( ! is_array( $image ) || empty($image['url'] ) ) {
+			return $image;
+		}
+
+		$thumbnail_id = (int) $image['id'];
+		if ( empty( $thumbnail_id ) ) {
+			return new IXR_Error( 500, __( 'Sorry, looks like the image upload failed.', 'syndication' ) );
+		}
+		
+		$args = array(
+			$blog_id,
+			$username,
+			$password,
+			$thumbnail_id,
+			array(
+				'post_title' => $thumbnail_post_data['post_title'],
+				'post_content' => $thumbnail_post_data['post_content'],
+				'post_excerpt' => $thumbnail_post_data['post_excerpt'],
+			),
+		);
+
+		//update caption and description of the image
+		$result = $wp_xmlrpc_server->wp_editPost( $args );
+		if ( $result !== true ) {
+			//failed to update atatchment post details
+			//handle it th way you want it (log it, message it)
+			error_log('Syndication. xmlrpc_post_gallery_images Failed to update remote post attachments');
+		}
+		//update alt text of the image
+		update_post_meta( $thumbnail_id, '_wp_attachment_image_alt', $thumbnail_alt_text );
+
+		return $thumbnail_id;
+	} //end of xmlrpc_post_gallery_images()
 }
 
 Syndication_WP_XMLRPC_Client_Extensions::init();