diff --git a/modules/Bio/EnsEMBL/DBSQL/GeneAdaptor.pm b/modules/Bio/EnsEMBL/DBSQL/GeneAdaptor.pm
index 7a7ee5ce691780dc1ed1234289cb47dca34d5351..c9599f5fc606596ac5a8dbfca7f1d393f5d50003 100644
--- a/modules/Bio/EnsEMBL/DBSQL/GeneAdaptor.pm
+++ b/modules/Bio/EnsEMBL/DBSQL/GeneAdaptor.pm
@@ -621,7 +621,7 @@ sub store {
                "seq_region_id = ?, " .
                "seq_region_start = ?, " .
                "seq_region_end = ?, " .
-               "seq_region_strand = ? ";
+               "seq_region_strand = ?";
 
   my $sth = $self->prepare( $store_gene_sql );
    $sth->execute(
@@ -636,9 +636,7 @@ sub store {
 
    my $gene_dbID = $sth->{'mysql_insertid'};
 
-   #
    # store stable ids if they are available
-   #
    if (defined($gene->stable_id)) {
 
      my $statement = "INSERT INTO gene_stable_id
@@ -652,9 +650,8 @@ sub store {
    }
 
 
-  #
-  # store the gene description associated with this gene if there is one
-  #
+  # store the gene description associated with this gene if there is
+  # one
   my $desc = $gene->description();
   if(defined($desc)) {
     $sth = $self->prepare("INSERT INTO gene_description " .
@@ -664,9 +661,7 @@ sub store {
     $sth->finish();
   }
 
-   #
    # store the dbentries associated with this gene
-   #
    my $dbEntryAdaptor = $db->get_DBEntryAdaptor();
 
    foreach my $dbe ( @{$gene->get_all_DBEntries} ) {
@@ -697,10 +692,29 @@ sub store {
     $transcript_adaptor->store($t,$gene_dbID );
   }
 
-   #set the adaptor and dbID on the original passed in gene not the transfered
-   #copy
-   $original->adaptor( $self );
-   $original->dbID( $gene_dbID );
+
+  # if a display_xref is defined store it as well.  This requires an
+  # update to the gene table and could not have been done at the time
+  # the gene was stored because the gene needed to be stored to store
+  # the xrefs and get the display xref id. A bit of a catch22.
+  my $display_xref = $gene->display_xref;
+  if($display_xref) {
+    if(!$display_xref->is_stored($db)) {
+      # This should be stored already b/c it should at least
+      # be associated with one of the transcripts or translations.
+      # We'll allow this though because it could be desired behaviour.
+      $dbEntryAdaptor->store($display_xref, $gene_dbID, "Gene");
+    }
+    $sth = $self->prepare
+      ("UPDATE gene SET display_xref_id = ? WHERE gene_id = ?");
+    $sth->execute($display_xref->dbID(), $gene_dbID);
+    $sth->finish();
+  }
+
+  # set the adaptor and dbID on the original passed in gene not the
+  # transfered copy
+  $original->adaptor( $self );
+  $original->dbID( $gene_dbID );
 
    return $gene_dbID;
 }