diff --git i/opengraph_meta.common.inc w/opengraph_meta.common.inc
index 491e401..3841fc9 100644
--- i/opengraph_meta.common.inc
+++ w/opengraph_meta.common.inc
@@ -44,7 +44,7 @@ class OpenGraphMeta {
   /** Db field name for optional tags (not to be used by external code) */
   const __OPTIONAL_DB_FIELD = 'optional';
 
-  
+
   /** Singleton instance. */
   private static $instance = NULL;
 
@@ -196,6 +196,32 @@ class OpenGraphMeta {
     $this->data_obj->delete_tags($nid);
   }
 
+
+  /**
+   * Validate that data being saved is still accurate
+   *
+   * @param $node the node object
+   */
+  public function validate_node_data($node) {
+    $images = $this->harvest_images_from_node($node);
+
+    $opengraph_meta = $node->opengraph_meta;
+
+    $match = false;
+    foreach ($images as $image) {
+      if ($opengraph_meta['image'] === $image['url']) {
+        $match = true;
+      }
+    }
+
+    if (!$match) {
+      $opengraph_meta['image'] = NULL;
+    }
+
+    return $opengraph_meta;
+  }
+
+
   /**
    * Save FB meta tag data for the given node.
    *
@@ -330,7 +356,7 @@ class OpenGraphMeta {
   public function warn($msg) {
     watchdog('opengraph_meta', $msg, array(), WATCHDOG_WARNING);
   }
-  
+
 
   /**
    * FOR TESTING PURPOSES ONLY!
@@ -552,6 +578,13 @@ class OpenGraphMetaDrupalLayer {
       $_uri_field = 'filepath';
 
     if (is_array($fields)) {
+
+      if (isset($fields['fid']) && !isset($fields['filemime'])) {
+        $file = OpenGraphMetaDrupalLayer::load_file($fields['fid']);
+        $fields['filemime'] = $file->filemime;
+        $fields[$_uri_field] = $file->uri;
+      }
+
       if (!empty($fields['filemime']) && FALSE !== stripos($fields['filemime'], 'image') && !empty($fields[$_uri_field])) {
         $url = $fields[$_uri_field];
         if (7 <= OPENGRAPH_META_DRUPAL_VERSION)
@@ -647,6 +680,17 @@ class OpenGraphMetaDrupalLayer {
   }
 
 
+  /** Load a given file by fid. */
+  public static function load_file($fid) {
+    switch (OPENGRAPH_META_DRUPAL_VERSION) {
+      case 6:
+        return db_query("SELECT * FROM {files} WHERE fid = %d", $fid);
+        break;
+      default:
+        return file_load($fid);
+    }
+  }
+
 
   /**
    * Log a watchdog error related to the Drupal compatibility layer.
diff --git i/opengraph_meta.drupal6-hooks.inc w/opengraph_meta.drupal6-hooks.inc
index 13cbd65..394b2a7 100644
--- i/opengraph_meta.drupal6-hooks.inc
+++ w/opengraph_meta.drupal6-hooks.inc
@@ -21,6 +21,11 @@ function opengraph_meta_nodeapi(&$node, $op, $teaser = NULL, $page = NULL) {
     case 'delete':
       OpenGraphMeta::instance()->delete_node_data($node->nid);
       break;
+    case 'presave':
+      if (!empty($node->opengraph_meta)) {
+        $node->opengraph_meta = OpenGraphMeta::instance()->validate_node_data($node);
+      }
+      break;
     case 'insert':
     case 'update':
       if (!empty($node->opengraph_meta)) {
diff --git i/opengraph_meta.drupal7-hooks.inc w/opengraph_meta.drupal7-hooks.inc
index 93dfb86..43ccff4 100644
--- i/opengraph_meta.drupal7-hooks.inc
+++ w/opengraph_meta.drupal7-hooks.inc
@@ -49,6 +49,15 @@ function opengraph_meta_node_insert($node){
 }
 
 
+/**
+ * Implements hook_node_presave().
+ */
+function opengraph_meta_node_presave($node){
+  if (!empty($node->opengraph_meta)) {
+    $node->opengraph_meta = OpenGraphMeta::instance()->validate_node_data($node);
+  }
+}
+
 
 /**
  * Implements hook_node_update().
