diff --git a/matrix.module b/matrix.module
index c8b0821..7481133 100644
--- a/matrix.module
+++ b/matrix.module
@@ -219,7 +219,8 @@ function matrix_field_widget_form(&$form, &$form_state, $field, $instance, $lang
         $element['#matrix_rows'] = $rows_count;
         $element['#matrix_more_rows'] = FALSE;
         for ($row = 1; $row <= $rows_count; $row++) {
-          $row_labels[$row] = isset($settings['rows'][$row]['title']) ? $settings['rows'][$row]['title']: '';
+          $label = isset($settings['rows'][$row]['title']) ? $settings['rows'][$row]['title']: '';
+          $row_labels[$row] = array('data' => $label, 'header' => true, 'scope' => 'row');
         }
       }
       
@@ -289,6 +290,13 @@ function matrix_field_widget_form(&$form, &$form_state, $field, $instance, $lang
             $required = FALSE;
             $required_marker = '';
           }
+          $field_label = (isset($settings['rows'][$row]['title']))
+          				  ? $settings['rows'][$row]['title']
+          				  : '';
+          $field_label .= (isset($settings['cols'][$col]['title']))
+          				  ? ' - '. $settings['cols'][$col]['title']
+          				  : '';
+          $field_label = '<span class="element-invisible">'. $field_label .'</span>';
           switch ($field_type) {
             case 'none':
               $element['grid'][$row .'-'. $col] = array(
@@ -304,6 +312,7 @@ function matrix_field_widget_form(&$form, &$form_state, $field, $instance, $lang
             case 'textfield':
               $element['grid'][$row .'-'. $col] = array(
                 '#type' => 'textfield',
+                '#title' => $field_label,
                 '#matrix_row' => $row,
                 '#matrix_column' => $col,
                 '#field_name' => $element['#title'],
@@ -320,6 +329,7 @@ function matrix_field_widget_form(&$form, &$form_state, $field, $instance, $lang
             case 'select':
               $element['grid'][$row .'-'. $col] = array(
                 '#type' => 'select',
+                '#title' => $field_label,
                 '#matrix_row' => $row,
                 '#matrix_column' => $col,
                 '#field_name' => $element['#title'],
@@ -335,6 +345,7 @@ function matrix_field_widget_form(&$form, &$form_state, $field, $instance, $lang
             case 'radios':
               $element['grid'][$row .'-'. $col] = array(
                 '#type' => 'radios',
+                '#title' => $field_label,
                 '#matrix_row' => $row,
                 '#matrix_column' => $col,
                 '#field_name' => $element['#title'],
@@ -350,6 +361,7 @@ function matrix_field_widget_form(&$form, &$form_state, $field, $instance, $lang
             case 'checkboxes':
               $element['grid'][$row .'-'. $col] = array(
                 '#type' => 'checkboxes',
+                '#title' => $field_label,
                 '#matrix_row' => $row,
                 '#matrix_column' => $col,
                 '#field_name' => $element['#title'],
@@ -755,7 +767,7 @@ function matrix_field_formatter_view($entity_type, $entity, $field, $instance, $
         array_unshift($headers, ''); //cell 0,0   
         
         for ($row = 1; $row <= $rows_count; $row++) {
-          $cell = array('data' => $row, 'class' => 'matrix-col-header');
+          $cell = array('data' => $row, 'class' => 'matrix-col-header', 'header' => true, 'scope' => 'row');
           array_unshift($rows[$row], $cell);
         }     
       }
@@ -776,7 +788,7 @@ function matrix_field_formatter_view($entity_type, $entity, $field, $instance, $
         
         if (!empty($settings['rows'])) {
           foreach ($settings['rows'] as $row_id => $row) {
-            $cell = array('data' => $row['title'], 'class' => 'matrix-col-header');
+            $cell = array('data' => $row['title'], 'class' => 'matrix-col-header', 'header' => true, 'scope' => 'row');
             if (isset($rows[$row_id])) {
               array_unshift($rows[$row_id], $cell);
             }
