diff --git a/field_conditional_state/field_conditional_state.admin.inc b/field_conditional_state/field_conditional_state.admin.inc
index 113d66c..a526507 100644
--- a/field_conditional_state/field_conditional_state.admin.inc
+++ b/field_conditional_state/field_conditional_state.admin.inc
@@ -58,10 +58,28 @@ function field_conditional_state_settings_form($form, &$form_state, $instance) {
         $control_element[$field_name] = $function($form, $form_state, $field_info, $field_instance, $langcode, $items, $delta, $element);
       }
       unset($control_element[$field_name]['#element_validate']);
+
+      $type = str_replace($field_instance['widget']['module'] . '_', '', $field_instance['widget']['type']);
+      switch ($type) {
+        case 'select':
+        case 'buttons':
+          $control_element[$field_name]['#type'] = 'select';
+          break;
+
+        case 'onoff':
+          unset($control_element[$field_name]['#default_value']);
+          $control_element[$field_name]['#options'] = array(
+            $control_element[$field_name]['#on_value'] => 'checked',
+            $control_element[$field_name]['#off_value'] => 'unchecked',
+          );
+          $control_element[$field_name]['#type'] = 'select';
+          break;
+      }
+      $total_options = count($control_element[$field_name]['#options']);
+
       $form['add_field_state']['options'][$field_name] = array_merge(
         $control_element[$field_name],
         array(
-          '#type' => $control_element[$field_name]['#type'] == 'radios' ? 'select' : $control_element[$field_name]['#type'],
           '#required' => FALSE,
           '#multiple' => TRUE,
           '#states'   => array(
@@ -69,7 +87,7 @@ function field_conditional_state_settings_form($form, &$form_state, $instance) {
               ':input[name="add_field_state[control_field]"]' => array('value' => $field_name),
             ),
           ),
-          '#size' => 5,
+          '#size' => $total_options > 5 ? 5 : $total_options,
           '#prefix' => '<div class="values-selection">',
           '#suffix' => '</div>',
         )
