diff --git a/includes/mollom.class.inc b/includes/mollom.class.inc
index b75020e..17f8c56 100644
--- a/includes/mollom.class.inc
+++ b/includes/mollom.class.inc
@@ -1164,7 +1164,8 @@ abstract class Mollom {
     if (!isset($publicKey)) {
       $publicKey = $this->publicKey;
     }
-    $result = $this->query('GET', 'blacklist/' . $publicKey . '/' . $entryId, array(), array('entry', 'id'));
+    $path = 'blacklist/' . $publicKey . '/' . rawurlencode($entryId);
+    $result = $this->query('GET', $path, array(), array('entry', 'id'));
     return isset($result['entry']) ? $result['entry'] : $result;
   }
 
@@ -1190,7 +1191,7 @@ abstract class Mollom {
     }
     $path = 'blacklist/' . $publicKey;
     if (!empty($data['id'])) {
-      $path .= '/' . $data['id'];
+      $path .= '/' . rawurlencode($data['id']);
       unset($data['id']);
     }
     $result = $this->query('POST', $path, $data, array('entry', 'id'));
@@ -1213,7 +1214,8 @@ abstract class Mollom {
     if (!isset($publicKey)) {
       $publicKey = $this->publicKey;
     }
-    $result = $this->query('POST', 'blacklist/' . $publicKey . '/' . $entryId . '/delete');
+    $path = 'blacklist/' . $publicKey . '/' . rawurlencode($entryId) . '/delete';
+    $result = $this->query('POST', $path);
     return $this->lastResponseCode === TRUE;
   }
 }
diff --git a/mollom.admin.inc b/mollom.admin.inc
index 302f9d0..5f9a69a 100644
--- a/mollom.admin.inc
+++ b/mollom.admin.inc
@@ -448,6 +448,7 @@ function mollom_admin_unprotect_form_submit($form, &$form_state) {
  */
 function mollom_admin_blacklist_form(&$form_state, $type = 'spam') {
   $form['#tree'] = TRUE;
+  $form['#attached']['css'][] = drupal_get_path('module', 'mollom') . '/mollom.admin.css';
 
   // Translate internal reason values for rendering and select list in form.
   $contexts = array(
@@ -471,25 +472,24 @@ function mollom_admin_blacklist_form(&$form_state, $type = 'spam') {
       if ($entry['reason'] != $type) {
         continue;
       }
+      $row = array();
       // #class property is internally used by
       // theme_mollom_admin_blacklist_form().
-      $row = array(
-        'context' => array(
-          '#value' => check_plain($contexts[$entry['context']]),
-          '#class' => 'mollom-blacklist-context value-' . check_plain($entry['context']),
-        ),
-        'match' => array(
-          '#value' => check_plain($matches[$entry['match']]),
-          '#class' => 'mollom-blacklist-match value-' . check_plain($entry['match']),
-        ),
-        'value' => array(
-          '#value' => check_plain($entry['value']),
-          '#class' => 'mollom-blacklist-value',
-        ),
+      $row['context'] = array(
+        '#value' => check_plain($contexts[$entry['context']]),
+        '#class' => 'mollom-blacklist-context value-' . check_plain($entry['context']),
       );
+      $row['match'] = array(
+        '#value' => check_plain($matches[$entry['match']]),
+        '#class' => 'mollom-blacklist-match value-' . check_plain($entry['match']),
+      );
+      $row['value'] = array(
+        '#value' => check_plain($entry['value']),
+        '#class' => 'mollom-blacklist-value',
+       );
       $row['actions']['delete'] = array(
-        '#value' => l(t('delete'), 'admin/settings/mollom/blacklist/delete/' . $entry['id'], array(
-          'query' => drupal_get_destination(),
+        '#value' => l(t('delete'), 'admin/settings/mollom/blacklist/delete/', array(
+          'query' => array('id' => $entry['id']) + array('destination' => preg_replace('/destination=/', '', drupal_get_destination())),
         )),
       );
       $form['blacklist'][$entry['id']] = $row;
@@ -626,26 +626,25 @@ function theme_mollom_admin_blacklist_form($form) {
 /**
  * Form builder; Builds the confirmation form for deleting a blacklist item.
  *
- * @param $key
- *   The blacklist entry text to remove, base64-encoded.
- * @param $context
- *   The context of the blacklist entry.
- * @param $reason
- *   The reason of the blacklist entry.
- *
  * @ingroup forms
  * @see mollom_admin_blacklist_delete_submit()
  */
-function mollom_admin_blacklist_delete(&$form_state, $entryId) {
-  $entry = mollom()->getBlacklistEntry($entryId);
+function mollom_admin_blacklist_delete(&$form_state) {
+  $id = $_GET['id'];
+  if (empty($id) || !($entry = mollom()->getBlacklistEntry($id))) {
+    drupal_not_found();
+    return;
+  }
+
   $form['entry'] = array(
     '#type' => 'value',
     '#value' => $entry,
   );
-
   return confirm_form(
     $form,
-    t('Are you sure you want to delete %value from the blacklist?', array('%value' => $entry['value'])),
+    t('Are you sure you want to delete  from the blacklist?', array(
+      '%value' => $entry['value'])
+    ),
     'admin/settings/mollom/blacklist',
     t('This action cannot be undone.'),
     t('Delete'), t('Cancel')
@@ -655,7 +654,7 @@ function mollom_admin_blacklist_delete(&$form_state, $entryId) {
 /**
  * Form submit handler to delete an entry from the blacklist.
  */
-function mollom_admin_blacklist_delete_submit($form, &$form_state) {
+function mollom_admin_blacklist_delete_submit(&$form, &$form_state) {
   $result = mollom()->deleteBlacklistEntry($form_state['values']['entry']['id']);
 
   $args = array(
diff --git a/mollom.module b/mollom.module
index de22cf8..827ab4a 100644
--- a/mollom.module
+++ b/mollom.module
@@ -228,7 +228,7 @@ function mollom_menu() {
     'file' => 'mollom.admin.inc',
   );
   $items['admin/settings/mollom/blacklist/delete'] = array(
-    'title' => 'Delete',
+    'title' => 'Delete blacklist entry',
     'page callback' => 'drupal_get_form',
     'page arguments' => array('mollom_admin_blacklist_delete'),
     'access arguments' => array('administer mollom'),
