diff --git a/src/bundles/alphafold/src/database.py b/src/bundles/alphafold/src/database.py
index c97a2171f..b48b3f3e9 100644
--- a/src/bundles/alphafold/src/database.py
+++ b/src/bundles/alphafold/src/database.py
@@ -18,7 +18,7 @@ from chimerax.core.settings import Settings
 class _AlphaFoldDatabaseSettings(Settings):
     EXPLICIT_SAVE = {
         'database_url': 'https://alphafold.ebi.ac.uk/files/AF-{uniprot_id}-F1-model_v{version}.cif',
-        'database_version': '2',
+        'database_version': '3',
         'last_update_time': 0.0,	# seconds since 1970 epoch
         'update_interval': 86400.0,	# seconds
         'update_url': 'https://www.rbvi.ucsf.edu/chimerax/data/status/alphafold_database.json',
diff --git a/src/bundles/alphafold/src/fetch.py b/src/bundles/alphafold/src/fetch.py
index c74a059a3..bb6915490 100644
--- a/src/bundles/alphafold/src/fetch.py
+++ b/src/bundles/alphafold/src/fetch.py
@@ -58,7 +58,7 @@ def alphafold_fetch(session, uniprot_id, color_confidence=True,
 
     if pae:
         from .pae import alphafold_pae
-        alphafold_pae(session, structure = models[0], uniprot_id = uniprot_id)
+        alphafold_pae(session, structure = models[0], uniprot_id = uniprot_id, version=version)
         
     return models, status
 
diff --git a/src/bundles/alphafold/src/pae.py b/src/bundles/alphafold/src/pae.py
index c9799c7a5..e1d2904c2 100644
--- a/src/bundles/alphafold/src/pae.py
+++ b/src/bundles/alphafold/src/pae.py
@@ -862,20 +862,24 @@ def read_json_pae_matrix(path):
         raise UserError(f'JSON file "{path}" is not AlphaFold predicted aligned error data, expected a top level list')
     d = j[0]
 
-    valid = (isinstance(d, dict) and 'residue1' in d and 'residue2' in d and 'distance' in d)
+    valid = (isinstance(d, dict) and 'residue1' in d and 'residue2' in d and 'distance' in d) or (isinstance(d, dict) and 'predicted_aligned_error' in d)
     if not valid:
         from chimerax.core.errors import UserError
         raise UserError(f'JSON file "{path}" is not AlphaFold predicted aligned error data, expected a dictionary with keys "residue1", "residue2" and "distance"')
 
     # Read distance errors into numpy array
     from numpy import array, zeros, float32, int32
-    r1 = array(d['residue1'], dtype=int32)
-    r2 = array(d['residue2'], dtype=int32)
-    ea = array(d['distance'], dtype=float32)
-    # me = d['max_predicted_aligned_error']
-    n = r1.max()
-    pae = zeros((n,n), float32)
-    pae[r1-1,r2-1] = ea
+    if 'predicted_aligned_error' in d:
+        pae = array(d['predicted_aligned_error'], dtype=float32)
+        pae[pae==0] = 0.2 # Avoid divide-by-zero warnings in domain parsing
+    else:
+        r1 = array(d['residue1'], dtype=int32)
+        r2 = array(d['residue2'], dtype=int32)
+        ea = array(d['distance'], dtype=float32)
+        # me = d['max_predicted_aligned_error']
+        n = r1.max()
+        pae = zeros((n,n), float32)
+        pae[r1-1,r2-1] = ea
 
     return pae
 
@@ -997,13 +1001,13 @@ def set_pae_domain_residue_attribute(residues, clusters):
 # -----------------------------------------------------------------------------
 #
 def alphafold_pae(session, structure = None, file = None, uniprot_id = None,
-                  palette = None, range = None, plot = None, divider_lines = None,
+                  version = None, palette = None, range = None, plot = None, divider_lines = None,
                   color_domains = False, connect_max_pae = 5, cluster = 0.5, min_size = 10):
     '''Load AlphaFold predicted aligned error file and show plot or color domains.'''
 
     if uniprot_id:
         from .database import alphafold_pae_url
-        pae_url = alphafold_pae_url(session, uniprot_id)
+        pae_url = alphafold_pae_url(session, uniprot_id, database_version=version)
         file_name = pae_url.split('/')[-1]
         from chimerax.core.fetch import fetch_file
         file = fetch_file(session, pae_url, 'AlphaFold PAE %s' % uniprot_id,
