diff --git a/blocks/blockstore/blockstore.go b/blocks/blockstore/blockstore.go
index dfa35ec413ad27d1833785b3aea00a54d7ecf90d..fb8a0f067ffeb36d37994db0873cba5b89ef3710 100644
--- a/blocks/blockstore/blockstore.go
+++ b/blocks/blockstore/blockstore.go
@@ -100,12 +100,16 @@ func (bs *blockstore) Get(k *cid.Cid) (blocks.Block, error) {
 	}
 
 	if bs.rehash {
-		rb := blocks.NewBlock(bdata)
-		if !rb.Cid().Equals(k) {
+		rbcid, err := k.Prefix().Sum(bdata)
+		if err != nil {
+			return nil, err
+		}
+
+		if !rbcid.Equals(k) {
 			return nil, ErrHashMismatch
-		} else {
-			return rb, nil
 		}
+
+		return blocks.NewBlockWithCid(bdata, rbcid)
 	} else {
 		return blocks.NewBlockWithCid(bdata, k)
 	}
diff --git a/test/sharness/t0084-repo-read-rehash.sh b/test/sharness/t0084-repo-read-rehash.sh
index 9be2e95cf9c50a9550f9787a703b92f4983265e4..7a1faa4bd86700d845e4e8a15177163cd9f99372 100755
--- a/test/sharness/t0084-repo-read-rehash.sh
+++ b/test/sharness/t0084-repo-read-rehash.sh
@@ -43,6 +43,11 @@ test_check_bad_blocks() {
 
 test_check_bad_blocks
 
+test_expect_success "can add and cat a raw-leaf file" '
+	HASH=$(echo "stuff" | ipfs add -q --raw-leaves) &&
+	ipfs cat $HASH > /dev/null
+'
+
 test_launch_ipfs_daemon
 test_check_bad_blocks
 test_kill_ipfs_daemon