diff --git a/luni/src/test/java/libcore/java/nio/BufferTest.java b/luni/src/test/java/libcore/java/nio/BufferTest.java
index 3ef549b..9a2cb12 100644
--- a/luni/src/test/java/libcore/java/nio/BufferTest.java
+++ b/luni/src/test/java/libcore/java/nio/BufferTest.java
@@ -1365,4 +1365,68 @@
         d.put(1, (double)1);
         b.limit(0);  d.put(1, (double)1);
     }
+
+    // http://b/32655865
+    public void test_ByteBufferAsXBuffer_ByteOrder() {
+        ByteBuffer byteBuffer = ByteBuffer.allocate(10);
+        // Fill a ByteBuffer with different bytes that make it easy to tell byte ordering issues.
+        for (int i = 0; i < 10; i++) {
+            byteBuffer.put((byte)i);
+        }
+        byteBuffer.rewind();
+        // Obtain a big-endian and little-endian copy of the source array.
+        ByteBuffer bigEndian = byteBuffer.duplicate().order(ByteOrder.BIG_ENDIAN);
+        ByteBuffer littleEndian = byteBuffer.duplicate().order(ByteOrder.LITTLE_ENDIAN);
+
+        // Check each type longer than a byte to confirm the ordering differs.
+        // asXBuffer.
+        assertFalse(bigEndian.asShortBuffer().get() == littleEndian.asShortBuffer().get());
+        assertFalse(bigEndian.asIntBuffer().get() == littleEndian.asIntBuffer().get());
+        assertFalse(bigEndian.asLongBuffer().get() == littleEndian.asLongBuffer().get());
+        assertFalse(bigEndian.asDoubleBuffer().get() == littleEndian.asDoubleBuffer().get());
+        assertFalse(bigEndian.asCharBuffer().get() == littleEndian.asCharBuffer().get());
+        assertFalse(bigEndian.asFloatBuffer().get() == littleEndian.asFloatBuffer().get());
+
+        // asXBuffer().asReadOnlyBuffer()
+        assertFalse(bigEndian.asShortBuffer().asReadOnlyBuffer().get() ==
+                littleEndian.asShortBuffer().asReadOnlyBuffer().get());
+        assertFalse(bigEndian.asIntBuffer().asReadOnlyBuffer().get() ==
+                littleEndian.asIntBuffer().asReadOnlyBuffer().get());
+        assertFalse(bigEndian.asLongBuffer().asReadOnlyBuffer().get() ==
+                littleEndian.asLongBuffer().asReadOnlyBuffer().get());
+        assertFalse(bigEndian.asDoubleBuffer().asReadOnlyBuffer().get() ==
+                littleEndian.asDoubleBuffer().asReadOnlyBuffer().get());
+        assertFalse(bigEndian.asCharBuffer().asReadOnlyBuffer().get() ==
+                littleEndian.asCharBuffer().asReadOnlyBuffer().get());
+        assertFalse(bigEndian.asFloatBuffer().asReadOnlyBuffer().get() ==
+                littleEndian.asFloatBuffer().asReadOnlyBuffer().get());
+
+        // asXBuffer().duplicate()
+        assertFalse(bigEndian.asShortBuffer().duplicate().get() ==
+                littleEndian.asShortBuffer().duplicate().get());
+        assertFalse(bigEndian.asIntBuffer().duplicate().get() ==
+                littleEndian.asIntBuffer().duplicate().get());
+        assertFalse(bigEndian.asLongBuffer().duplicate().get() ==
+                littleEndian.asLongBuffer().duplicate().get());
+        assertFalse(bigEndian.asDoubleBuffer().duplicate().get() ==
+                littleEndian.asDoubleBuffer().duplicate().get());
+        assertFalse(bigEndian.asCharBuffer().duplicate().get() ==
+                littleEndian.asCharBuffer().duplicate().get());
+        assertFalse(bigEndian.asFloatBuffer().duplicate().get() ==
+                littleEndian.asFloatBuffer().duplicate().get());
+
+        // asXBuffer().slice()
+        assertFalse(bigEndian.asShortBuffer().slice().get() ==
+                littleEndian.asShortBuffer().slice().get());
+        assertFalse(bigEndian.asIntBuffer().slice().get() ==
+                littleEndian.asIntBuffer().slice().get());
+        assertFalse(bigEndian.asLongBuffer().slice().get() ==
+                littleEndian.asLongBuffer().slice().get());
+        assertFalse(bigEndian.asDoubleBuffer().slice().get() ==
+                littleEndian.asDoubleBuffer().slice().get());
+        assertFalse(bigEndian.asCharBuffer().slice().get() ==
+                littleEndian.asCharBuffer().slice().get());
+        assertFalse(bigEndian.asFloatBuffer().slice().get() ==
+                littleEndian.asFloatBuffer().slice().get());
+    }
 }
diff --git a/ojluni/src/main/java/java/nio/ByteBufferAsCharBuffer.java b/ojluni/src/main/java/java/nio/ByteBufferAsCharBuffer.java
index 0b2c18b..c94bc37 100644
--- a/ojluni/src/main/java/java/nio/ByteBufferAsCharBuffer.java
+++ b/ojluni/src/main/java/java/nio/ByteBufferAsCharBuffer.java
@@ -49,6 +49,7 @@
         if (bb instanceof DirectByteBuffer) {
             this.address = bb.address + off;
         }
+        this.bb.order(order);
         this.order = order;
         offset = off;
     }
diff --git a/ojluni/src/main/java/java/nio/ByteBufferAsDoubleBuffer.java b/ojluni/src/main/java/java/nio/ByteBufferAsDoubleBuffer.java
index 8ffbac5..f9c13fa 100644
--- a/ojluni/src/main/java/java/nio/ByteBufferAsDoubleBuffer.java
+++ b/ojluni/src/main/java/java/nio/ByteBufferAsDoubleBuffer.java
@@ -50,6 +50,7 @@
         if (bb instanceof DirectByteBuffer) {
             this.address = bb.address + off;
         }
+        this.bb.order(order);
         this.order = order;
         offset = off;
     }
diff --git a/ojluni/src/main/java/java/nio/ByteBufferAsFloatBuffer.java b/ojluni/src/main/java/java/nio/ByteBufferAsFloatBuffer.java
index dd16388..667c8bd 100644
--- a/ojluni/src/main/java/java/nio/ByteBufferAsFloatBuffer.java
+++ b/ojluni/src/main/java/java/nio/ByteBufferAsFloatBuffer.java
@@ -49,6 +49,7 @@
         if (bb instanceof DirectByteBuffer) {
             this.address = bb.address + off;
         }
+        this.bb.order(order);
         this.order = order;
         offset = off;
     }
diff --git a/ojluni/src/main/java/java/nio/ByteBufferAsIntBuffer.java b/ojluni/src/main/java/java/nio/ByteBufferAsIntBuffer.java
index 48eff4b..275f37e 100644
--- a/ojluni/src/main/java/java/nio/ByteBufferAsIntBuffer.java
+++ b/ojluni/src/main/java/java/nio/ByteBufferAsIntBuffer.java
@@ -49,6 +49,7 @@
         if (bb instanceof DirectByteBuffer) {
             this.address = bb.address + off;
         }
+        this.bb.order(order);
         this.order = order;
         offset = off;
     }
diff --git a/ojluni/src/main/java/java/nio/ByteBufferAsLongBuffer.java b/ojluni/src/main/java/java/nio/ByteBufferAsLongBuffer.java
index b2d377b..1ea65e3 100644
--- a/ojluni/src/main/java/java/nio/ByteBufferAsLongBuffer.java
+++ b/ojluni/src/main/java/java/nio/ByteBufferAsLongBuffer.java
@@ -49,6 +49,7 @@
         if (bb instanceof DirectByteBuffer) {
             this.address = bb.address + off;
         }
+        this.bb.order(order);
         this.order = order;
         offset = off;
     }
diff --git a/ojluni/src/main/java/java/nio/ByteBufferAsShortBuffer.java b/ojluni/src/main/java/java/nio/ByteBufferAsShortBuffer.java
index 6527308..90aec35 100644
--- a/ojluni/src/main/java/java/nio/ByteBufferAsShortBuffer.java
+++ b/ojluni/src/main/java/java/nio/ByteBufferAsShortBuffer.java
@@ -49,6 +49,7 @@
         if (bb instanceof DirectByteBuffer) {
             this.address = bb.address + off;
         }
+        this.bb.order(order);
         this.order = order;
         offset = off;
     }
