diff --git a/webform_matrix_component.module b/webform_matrix_component.module
index 755337b..cda4f97 100644
--- a/webform_matrix_component.module
+++ b/webform_matrix_component.module
@@ -175,11 +175,6 @@ function webform_matrix_component_form_alter(&$form, &$form_state, $form_id) {
           }
 
           for ($prow = 1; $prow <= $form_state[$formkey]['temp_matrix_rows']; $prow++) {
-              
-            if(isset($form_state[$formkey]['remove_line'])){
-                if($form_state[$formkey]['remove_line'] == $prow)
-                    continue;
-            }  
             if (isset($component['extra']['element'])) {
 
               $headers = array();
@@ -597,7 +592,22 @@ function _webform_matrix_component_get_remove_row_line_submit($form, &$form_stat
 
     $size_array  = count($remove_line_array); 
     $remove_line =  $remove_line_array[$size_array-1];
-    $form_state[$form_key]['remove_line'] = $remove_line;
+    $rowKeys = array_values(array_filter(array_keys($form['submitted'][$form_key]), 'is_int'));
+    $shifted = false;
+    foreach ($rowKeys as $key) {
+      if ($shifted) {
+        $form_state["input"]["submitted"][$form_key][$key - 1] = $form_state["input"]["submitted"][$form_key][$key];
+        $form['submitted'][$form_key][$key - 1] = $form['submitted'][$form_key][$key];
+        unset($form['submitted'][$form_key][$key]);
+        unset($form_state["input"]["submitted"][$form_key][$key]);
+      } else if ($key == $remove_line) {
+        $shifted = true;
+        unset($form['submitted'][$form_key][$key]);
+        unset($form_state["input"]["submitted"][$form_key][$key]);
+      }
+    }
+
+    $form_state[$form_key]['temp_matrix_rows']--;
 
     $form_state['rebuild'] = TRUE;
   }else{
@@ -609,4 +619,4 @@ function _webform_matrix_component_get_remove_row_line($form, &$form_state){
     $parents = $form_state['triggering_element']['#parents'];
   array_pop($parents);
   return drupal_array_get_nested_value($form, $parents);
-}
\ No newline at end of file
+}
