diff --git a/field_permissions.module b/field_permissions.module
index ce14ee0..d0b8cdb 100644
--- a/field_permissions.module
+++ b/field_permissions.module
@@ -100,12 +100,12 @@ function field_permissions_permission() {
 }
 
 /**
- * Implements of hook_form_FORM_ID_alter().
+ * Implements of hook_field_settings_form().
  */
-function field_permissions_form_field_ui_field_edit_form_alter(&$form, &$form_state, $form_id) {
-  // Injects the Field Permissions settings on the Edit field tab.
-  form_load_include($form_state, 'inc', 'field_permissions', 'includes/admin');
-  return _field_permissions_field_settings_form_alter($form, $form_state, $form_id);
+function field_permissions_field_settings_form($field, $instance, $has_data) {
+  drupal_set_message('Permissions not called?');
+  module_load_include('inc', 'field_permissions', 'includes/admin');
+  return _field_permissions_field_settings_form($field['settings']);
 }
 
 /**
diff --git a/includes/admin.inc b/includes/admin.inc
index b1cd5af..1bd84d9 100644
--- a/includes/admin.inc
+++ b/includes/admin.inc
@@ -119,15 +119,15 @@ function _field_permissions_permission() {
 /**
  * Alter the field settings form.
  */
-function _field_permissions_field_settings_form_alter(&$form, $form_state, $form_id) {
+function _field_permissions_field_settings_form($settings) {
   // Put the field permissions extensions at the top of the field settings
   // fieldset.
-  $form['field']['field_permissions'] = array(
+  $form['field_permissions'] = array(
     '#weight' => -10,
     '#access' => user_access('administer field permissions'),
   );
 
-  $form['field']['field_permissions']['type'] = array(
+  $form['field_permissions']['type'] = array(
     '#title' => t('Field visibility and permissions'),
     '#type' => 'radios',
     '#options' => array(
@@ -135,13 +135,13 @@ function _field_permissions_field_settings_form_alter(&$form, $form_state, $form
       FIELD_PERMISSIONS_PRIVATE => t('Private (only author and administrators can edit and view)'),
       FIELD_PERMISSIONS_CUSTOM => t('Custom permissions'),
     ),
-    '#default_value' => isset($form['#field']['field_permissions']['type']) ? $form['#field']['field_permissions']['type'] : FIELD_PERMISSIONS_PUBLIC,
+    '#default_value' => isset($settings['type']) ? $settings['type'] : FIELD_PERMISSIONS_PUBLIC,
   );
 
   // Add the container in which the field permissions matrix will be displayed.
   // (and make it so that it is only visible when custom permissions are being
   // used).
-  $form['field']['field_permissions']['permissions'] = array(
+  $form['field_permissions']['permissions'] = array(
     '#type' => 'container',
     '#states' => array(
       'visible' => array(
@@ -171,6 +171,7 @@ function _field_permissions_field_settings_form_alter(&$form, $form_state, $form
   // immediately, and our hook_permission() implementation relies on the field
   // info being up-to-date in order for that to work correctly.
   $form['#submit'][] = '_field_permissions_field_settings_form_submit';
+  return $form;
 }
 
 /**
