diff --git a/modules/mol/alg/pymod/chain_mapping.py b/modules/mol/alg/pymod/chain_mapping.py
index 5e90c49dc292c3108524e5c5ce0853f7065dfd18..466679ec2a7793d67976b456303e717d2ec8457c 100644
--- a/modules/mol/alg/pymod/chain_mapping.py
+++ b/modules/mol/alg/pymod/chain_mapping.py
@@ -1687,13 +1687,13 @@ class _Aligner:
         :returns: Alignment with s1 as first and s2 as second sequence 
         """
         if chem_type == mol.ChemType.AMINOACIDS:
-            return seq.alg.GlobalAlign(s1, s2, self.pep_subst_mat,
-                                       gap_open=self.pep_gap_open,
-                                       gap_ext=self.pep_gap_ext)[0]
+            return seq.alg.SemiGlobalAlign(s1, s2, self.pep_subst_mat,
+                                           gap_open=self.pep_gap_open,
+                                           gap_ext=self.pep_gap_ext)[0]
         elif chem_type == mol.ChemType.NUCLEOTIDES:
-            return seq.alg.GlobalAlign(s1, s2, self.nuc_subst_mat,
-                                       gap_open=self.nuc_gap_open,
-                                       gap_ext=self.nuc_gap_ext)[0]
+            return seq.alg.SemiGlobalAlign(s1, s2, self.nuc_subst_mat,
+                                           gap_open=self.nuc_gap_open,
+                                           gap_ext=self.nuc_gap_ext)[0]
         else:
             raise RuntimeError("Invalid ChemType")
         return aln
diff --git a/modules/mol/alg/tests/test_qsscore.py b/modules/mol/alg/tests/test_qsscore.py
index 5aed15ee8eb8f2591876b8862431e1680a41e88b..a9b3c6131466f4f4783ba7debb8b27dd38cadd55 100644
--- a/modules/mol/alg/tests/test_qsscore.py
+++ b/modules/mol/alg/tests/test_qsscore.py
@@ -130,8 +130,8 @@ class TestQSScore(unittest.TestCase):
         res = mapper.GetRigidMapping(ent_2, strategy="greedy_iterative_rmsd")
         qs_scorer = QSScorer.FromMappingResult(res)
         score_result = qs_scorer.Score(res.mapping)
-        self.assertAlmostEqual(score_result.QS_global, 0.3131, 2)
-        self.assertAlmostEqual(score_result.QS_best, 0.941, 2)
+        self.assertAlmostEqual(score_result.QS_global, 0.3191, 2)
+        self.assertAlmostEqual(score_result.QS_best, 0.9781, 2)
 
     def test_hetero_case_2_switched_order(self):
         # different stoichiometry
@@ -141,8 +141,8 @@ class TestQSScore(unittest.TestCase):
         res = mapper.GetRigidMapping(ent_2, strategy="greedy_iterative_rmsd")
         qs_scorer = QSScorer.FromMappingResult(res)
         score_result = qs_scorer.Score(res.mapping)
-        self.assertAlmostEqual(score_result.QS_global, 0.3131, 2)
-        self.assertAlmostEqual(score_result.QS_best, 0.941, 2)
+        self.assertAlmostEqual(score_result.QS_global, 0.3191, 2)
+        self.assertAlmostEqual(score_result.QS_best, 0.9781, 2)
 
     def test_hetero_case_3(self):
         # more chains
@@ -196,8 +196,8 @@ class TestQSScore(unittest.TestCase):
         res = mapper.GetRigidMapping(model, strategy="greedy_iterative_rmsd")
         qs_scorer = QSScorer.FromMappingResult(res)
         score_result = qs_scorer.Score(res.mapping)
-        self.assertAlmostEqual(score_result.QS_global, 0.323, 2)
-        self.assertAlmostEqual(score_result.QS_best, 0.921, 2)
+        self.assertAlmostEqual(score_result.QS_global, 0.321, 2)
+        self.assertAlmostEqual(score_result.QS_best, 0.932, 2)
 
     def test_hetero_model_switched_order(self):
         # same as above but with switched order to test for symmetric behaviour
@@ -208,8 +208,8 @@ class TestQSScore(unittest.TestCase):
         res = mapper.GetRigidMapping(model, strategy="greedy_iterative_rmsd")
         qs_scorer = QSScorer.FromMappingResult(res)
         score_result = qs_scorer.Score(res.mapping)
-        self.assertAlmostEqual(score_result.QS_global, 0.323, 2)
-        self.assertAlmostEqual(score_result.QS_best, 0.921, 2)
+        self.assertAlmostEqual(score_result.QS_global, 0.321, 2)
+        self.assertAlmostEqual(score_result.QS_best, 0.932, 2)
 
     def test_homo_1(self):
         # different stoichiometry SOD