diff --git a/packages/ckeditor5-engine/src/model/utils/deletecontent.js b/packages/ckeditor5-engine/src/model/utils/deletecontent.js
index 0e865134a57..4dd4d318cf3 100644
--- a/packages/ckeditor5-engine/src/model/utils/deletecontent.js
+++ b/packages/ckeditor5-engine/src/model/utils/deletecontent.js
@@ -84,8 +84,8 @@ export default function deleteContent( model, selection, options = {} ) {
const [ startPosition, endPosition ] = getLivePositionsForSelectedBlocks( selRange );
// 2. Remove the content if there is any.
- if ( !selRange.start.isTouching( selRange.end ) ) {
- writer.remove( selRange );
+ if ( !startPosition.isTouching( endPosition ) ) {
+ writer.remove( writer.createRange( startPosition, endPosition ) );
}
// 3. Merge elements in the right branch to the elements in the left branch.
diff --git a/packages/ckeditor5-engine/tests/model/utils/deletecontent.js b/packages/ckeditor5-engine/tests/model/utils/deletecontent.js
index 2c615a6834c..b1b709212e1 100644
--- a/packages/ckeditor5-engine/tests/model/utils/deletecontent.js
+++ b/packages/ckeditor5-engine/tests/model/utils/deletecontent.js
@@ -249,6 +249,12 @@ describe( 'DataController utils', () => {
'x[]bary'
);
+ test(
+ 'do not remove end block if selection ends at start position of it (multiple paragraphs)',
+ 'x[fooa]bar',
+ 'x[]bar'
+ );
+
test(
'removes empty element (merges it into second element)',
'x[]bary',