diff --git a/ChangeLog b/ChangeLog
index 26042c18ddd7d3e48b5a2121eba49384f5896e15..def8f38600b37b33982dd169f1514ee7e7d42d93 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -34,6 +34,8 @@ CVS code -
   cut_marked_segment()
 	- Add magic line when cutting a selection including filebot
 	  (discovered by DLR, fixed by DLR & Chris)
+  do_cut_text()
+	- Don't recenter the line when cutting one line (DLR).
 - files.c:
   do_writeout()
 	- Expanded strings to not use %s and ?: to determine
diff --git a/cut.c b/cut.c
index d69afd308eb1a6ac86832508cb9e61d41c70c5bb..34ea94dceaf259d32f6fc84ec999e32d718c76b1 100644
--- a/cut.c
+++ b/cut.c
@@ -194,6 +194,7 @@ int do_cut_text(void)
 {
     filestruct *tmp, *fileptr = current;
 #ifndef NANO_SMALL
+    int cuttingpartialline = 0;
     int cuttingtoend = 0;
 #endif
 
@@ -252,9 +253,12 @@ int do_cut_text(void)
 	}
     }
     if (ISSET(MARK_ISSET)) {
-	if (current->lineno <= mark_beginbuf->lineno)
+	if (current->lineno <= mark_beginbuf->lineno) {
+	    if (current->lineno == mark_beginbuf->lineno)
+		cuttingpartialline = 1;
 	    cut_marked_segment(current, current_x, mark_beginbuf,
 			       mark_beginx, 1);
+	}
 	else
 	    cut_marked_segment(mark_beginbuf, mark_beginx, current,
 			       current_x, 1);
@@ -264,7 +268,7 @@ int do_cut_text(void)
 
 	marked_cut = 1;
 	set_modified();
-	if (cuttingtoend)
+	if (cuttingpartialline || cuttingtoend)
 	    edit_refresh();
 	else
 	    edit_update(current, CENTER);