diff --git a/include/class.ticket.php b/include/class.ticket.php
index 9e7771908d6afd5ba56bddcf9c2a65a77c47d873..1698aa39bebce536033660da3bd8af00b455640e 100644
--- a/include/class.ticket.php
+++ b/include/class.ticket.php
@@ -454,9 +454,9 @@ implements RestrictedAccess, Threadable, Searchable {
     }
 
     function updateEstDueDate($clearOverdue=true) {
-        $DueDate = $this->getEstDueDate();
         $this->est_duedate = $this->getSLADueDate();
         // Clear overdue flag if duedate or SLA changes and the ticket is no longer overdue.
+        $DueDate = $this->getEstDueDate();
         if ($this->isOverdue()
             && $clearOverdue
             && (!$DueDate // Duedate + SLA cleared
@@ -3306,22 +3306,14 @@ implements RestrictedAccess, Threadable, Searchable {
             $this->selectSLAId();
         }
 
-        // Update estimated due date in database
-        $estimatedDueDate = $this->getEstDueDate();
-        $this->updateEstDueDate();
-
-        // Clear overdue flag if duedate or SLA changes and the ticket is no longer overdue.
-        if($this->isOverdue()
-            && (!$estimatedDueDate //Duedate + SLA cleared
-                || Misc::db2gmtime($estimatedDueDate) > Misc::gmtime() //New due date in the future.
-        )) {
-            $this->clearOverdue();
-        }
+        if (!$this->save())
+            return false;
 
+        $this->updateEstDueDate();
         Signal::send('model.updated', $this);
-        return $this->save();
-    }
 
+        return true;
+    }
 
     function updateField($form, &$errors) {
         global $thisstaff, $cfg;
@@ -3397,11 +3389,10 @@ implements RestrictedAccess, Threadable, Searchable {
 
         $this->lastupdate = SqlFunction::NOW();
 
+        $this->save();
         if ($updateDuedate)
             $this->updateEstDueDate();
 
-        $this->save();
-
         Signal::send('model.updated', $this);
 
         return true;