Index: src/wp-includes/taxonomy.php
===================================================================
--- src/wp-includes/taxonomy.php	(revision 41795)
+++ src/wp-includes/taxonomy.php	(working copy)
@@ -1857,21 +1857,21 @@
  * @return array|WP_Error The requested term data or empty array if no terms found.
  *                        WP_Error if any of the $taxonomies don't exist.
  */
-function wp_get_object_terms($object_ids, $taxonomies, $args = array()) {
+function wp_get_object_terms( $object_ids, $taxonomies, $args = array() ) {
 	if ( empty( $object_ids ) || empty( $taxonomies ) )
 		return array();
 
-	if ( !is_array($taxonomies) )
-		$taxonomies = array($taxonomies);
+	if ( ! is_array( $taxonomies ) )
+		$taxonomies = array( $taxonomies );
 
 	foreach ( $taxonomies as $taxonomy ) {
-		if ( ! taxonomy_exists($taxonomy) )
+		if ( ! taxonomy_exists( $taxonomy ) )
 			return new WP_Error( 'invalid_taxonomy', __( 'Invalid taxonomy.' ) );
 	}
 
-	if ( !is_array($object_ids) )
-		$object_ids = array($object_ids);
-	$object_ids = array_map('intval', $object_ids);
+	if ( ! is_array( $object_ids ) )
+		$object_ids = array( $object_ids );
+	$object_ids = array_map( 'intval', $object_ids );
 
 	$args = wp_parse_args( $args );
 
@@ -1912,7 +1912,14 @@
 
 	// Taxonomies registered without an 'args' param are handled here.
 	if ( ! empty( $taxonomies ) ) {
-		$terms = array_merge( $terms, get_terms( $args ) );
+		$terms_from_remaining_taxonomies = get_terms( $args );
+
+		// Array keys should be preserved for values of $fields that use term_id for keys.
+		if ( ! empty( $args['fields'] ) && 0 === strpos( $args['fields'], 'id=>' ) ) {
+			$terms = $terms + $terms_from_remaining_taxonomies;
+		} else {
+			$terms = array_merge( $terms, $terms_from_remaining_taxonomies );
+		}
 	}
 
 	/**
Index: tests/phpunit/tests/term/query.php
===================================================================
--- tests/phpunit/tests/term/query.php	(revision 41795)
+++ tests/phpunit/tests/term/query.php	(working copy)
@@ -429,6 +429,50 @@
 	}
 
 	/**
+	 * @ticket 41293
+	 */
+	public function test_should_allow_same_args_with_the_get_terms() {
+		register_post_type( 'wptests_pt' );
+		register_taxonomy( 'wptests_tax', 'wptests_pt' );
+		$t1 = self::factory()->term->create( array(
+			'taxonomy' => 'wptests_tax',
+			'name' => 'foo',
+			'slug' => 'bar',
+		) );
+		$t2 = self::factory()->term->create( array(
+			'taxonomy' => 'wptests_tax',
+			'name' => 'bar',
+			'slug' => 'foo',
+		) );
+
+		$p = self::factory()->post->create( array(
+			'post_type' => 'wptests_pt',
+		) );
+
+		wp_set_object_terms( $p, array( $t1, $t2 ), 'wptests_tax' );
+
+		$expected = wp_get_post_terms( $p, 'wptests_tax', array(
+			'fields' => 'ids',
+		) );
+
+		$found1 = array_keys( wp_get_object_terms( $p, 'wptests_tax', array(
+			'fields' => 'id=>parent',
+		) ) );
+
+		$found2 = array_keys( wp_get_object_terms( $p, 'wptests_tax', array(
+			'fields' => 'id=>slug',
+		) ) );
+
+		$found3 = array_keys( wp_get_object_terms( $p, 'wptests_tax', array(
+			'fields' => 'id=>name',
+		) ) );
+
+		$this->assertSame( $expected, $found1 );
+		$this->assertSame( $expected, $found2 );
+		$this->assertSame( $expected, $found3 );
+	}
+
+	/**
 	 * @ticket 41796
 	 */
 	public function test_number_should_work_with_object_ids() {
