diff --git a/hgext/largefiles/lfcommands.py b/hgext/largefiles/lfcommands.py
index 44a371823f831cc8b9108179977319caba45b82f_aGdleHQvbGFyZ2VmaWxlcy9sZmNvbW1hbmRzLnB5..3ecce805ac13601ca22d9846742e53f49e465a90_aGdleHQvbGFyZ2VmaWxlcy9sZmNvbW1hbmRzLnB5 100644
--- a/hgext/largefiles/lfcommands.py
+++ b/hgext/largefiles/lfcommands.py
@@ -375,7 +375,15 @@
     toget = []
 
     for lfile in lfiles:
-        expectedhash = repo[node][lfutil.standin(lfile)].data().strip()
+        # If we are mid-merge, then we have to trust the standin that is in the
+        # working copy to have the correct hashvalue.  This is because the
+        # original hg.merge() already updated the standin as part of the normal
+        # merge process -- we just have to udpate the largefile to match.
+        if getattr(repo, "_ismerging", False):
+            expectedhash = lfutil.readstandin(repo, lfile)
+        else:
+            expectedhash = repo[node][lfutil.standin(lfile)].data().strip()
+
         # if it exists and its hash matches, it might have been locally
         # modified before updating and the user chose 'local'.  in this case,
         # it will not be in any store, so don't look for it.
diff --git a/hgext/largefiles/overrides.py b/hgext/largefiles/overrides.py
index 44a371823f831cc8b9108179977319caba45b82f_aGdleHQvbGFyZ2VmaWxlcy9vdmVycmlkZXMucHk=..3ecce805ac13601ca22d9846742e53f49e465a90_aGdleHQvbGFyZ2VmaWxlcy9vdmVycmlkZXMucHk= 100644
--- a/hgext/largefiles/overrides.py
+++ b/hgext/largefiles/overrides.py
@@ -612,8 +612,15 @@
     return result
 
 def hg_merge(orig, repo, node, force=None, remind=True):
-    result = orig(repo, node, force, remind)
-    lfcommands.updatelfiles(repo.ui, repo)
+    # Mark the repo as being in the middle of a merge, so that
+    # updatelfiles() will know that it needs to trust the standins in
+    # the working copy, not in the standins in the current node
+    repo._ismerging = True
+    try:
+        result = orig(repo, node, force, remind)
+        lfcommands.updatelfiles(repo.ui, repo)
+    finally:
+        repo._ismerging = False
     return result
 
 # When we rebase a repository with remotely changed largefiles, we need to