diff --git a/packages/slate/src/models/range.js b/packages/slate/src/models/range.js
index 7d983b9cf..68fce7bd2 100644
--- a/packages/slate/src/models/range.js
+++ b/packages/slate/src/models/range.js
@@ -657,7 +657,8 @@ class Range extends Record(DEFAULTS) {
*/
moveToRangeOf(start, end = start) {
- return this
+ const range = this.isBackward ? this.flip() : this
+ return range
.moveAnchorToStartOf(start)
.moveFocusToEndOf(end)
}
diff --git a/packages/slate/test/changes/at-current-range/unwrap-block/middle-child-blocks-with-backward-selection.js b/packages/slate/test/changes/at-current-range/unwrap-block/middle-child-blocks-with-backward-selection.js
new file mode 100644
index 000000000..100944c83
--- /dev/null
+++ b/packages/slate/test/changes/at-current-range/unwrap-block/middle-child-blocks-with-backward-selection.js
@@ -0,0 +1,64 @@
+/** @jsx h */
+
+import h from '../../../helpers/h'
+
+export default function (change) {
+ change.unwrapBlock('quote')
+}
+
+export const input = (
+
+
+
+
+ one
+
+
+ two
+
+
+ three
+
+
+ four
+
+
+ five
+
+
+ six
+
+
+
+
+)
+
+export const output = (
+
+
+
+
+ one
+
+
+ two
+
+
+
+ three
+
+
+ four
+
+
+
+ five
+
+
+ six
+
+
+
+
+)
+