diff --git a/nion/data/Core.py b/nion/data/Core.py
index ca5f2c4..43e17b0 100755
--- a/nion/data/Core.py
+++ b/nion/data/Core.py
@@ -386,7 +386,7 @@ def function_register_template(image_xdata: DataAndMetadata.DataAndMetadata, tem
     ccorr_xdata = function_match_template(image_xdata, template_xdata)
     error, ccoeff, max_pos = TemplateMatching.find_ccorr_max(ccorr_xdata.data)
     if not error:
-        return ccoeff, max_pos
+        return ccoeff, tuple(max_pos[i] - image_xdata.data_shape[i] * 0.5 for i in range(len(image_xdata.data_shape)))
 
 
 def function_shift(src: DataAndMetadata.DataAndMetadata, shift: typing.Tuple[float, ...], *, order: int = 1) -> DataAndMetadata.DataAndMetadata:

diff --git a/nion/data/test/Core_test.py b/nion/data/test/Core_test.py
index 54ef2a1..054d822 100755
--- a/nion/data/test/Core_test.py
+++ b/nion/data/test/Core_test.py
@@ -932,7 +932,7 @@ class TestCore(unittest.TestCase):
         template_xdata = DataAndMetadata.new_data_and_metadata(data[40:60])
         ccoeff, max_pos = Core.function_register_template(image_xdata, template_xdata)
         self.assertEqual(len(max_pos), 1)
-        self.assertAlmostEqual(max_pos[0], 50, places=1)
+        self.assertAlmostEqual(max_pos[0], 0, places=1)
         self.assertAlmostEqual(ccoeff, 1.0, places=1)
 
     def test_register_template_for_2d_data(self):
@@ -941,7 +941,7 @@ class TestCore(unittest.TestCase):
         template_xdata = DataAndMetadata.new_data_and_metadata(data[40:60, 15:20])
         ccoeff, max_pos = Core.function_register_template(image_xdata, template_xdata)
         self.assertEqual(len(max_pos), 2)
-        self.assertTrue(numpy.allclose(max_pos, (50, 17), atol=0.1))
+        self.assertTrue(numpy.allclose(max_pos, (0, -33), atol=0.1))
         self.assertAlmostEqual(ccoeff, 1.0, places=1)
 
     def test_sequence_join(self):

Should register_template return offset relative to center pixel?
```
quality, offset = xd.register_template(img, tmpl_img)
offset = Geometry.FloatPoint(y=img.data_shape[0] * 0.5 - offset[0], x=img.data_shape[1] * 0.5 - offset[1])
```

nion/data/test/Core_test.py::TestCore::test_register_template_for_1d_data nion/data/test/Core_test.py::TestCore::test_register_template_for_2d_data
nion/data/test/Core_test.py::TestCore::test_ability_to_take_1d_slice_with_newaxis nion/data/test/Core_test.py::TestCore::test_align_with_bounds_works_on_1d_data nion/data/test/Core_test.py::TestCore::test_align_with_bounds_works_on_2d_data nion/data/test/Core_test.py::TestCore::test_align_works_on_1d_data nion/data/test/Core_test.py::TestCore::test_align_works_on_2d_data nion/data/test/Core_test.py::TestCore::test_align_works_on_nx1_data nion/data/test/Core_test.py::TestCore::test_auto_correlation_keeps_calibration nion/data/test/Core_test.py::TestCore::test_concatenate_calibrations nion/data/test/Core_test.py::TestCore::test_concatenate_propagates_data_descriptor nion/data/test/Core_test.py::TestCore::test_create_display_from_rgba_sequence_should_work nion/data/test/Core_test.py::TestCore::test_create_rgba_image_from_uint16 nion/data/test/Core_test.py::TestCore::test_crop_out_of_bounds_produces_proper_size_data nion/data/test/Core_test.py::TestCore::test_crop_rotated_produces_proper_size_data nion/data/test/Core_test.py::TestCore::test_cross_correlation_keeps_calibration nion/data/test/Core_test.py::TestCore::test_display_data_2d_not_a_view nion/data/test/Core_test.py::TestCore::test_display_rgba_with_1d_rgba nion/data/test/Core_test.py::TestCore::test_fft_1d_forward_and_back_is_consistent nion/data/test/Core_test.py::TestCore::test_fft_1d_rms_is_same_as_original nion/data/test/Core_test.py::TestCore::test_fft_forward_and_back_is_consistent nion/data/test/Core_test.py::TestCore::test_fft_rms_is_same_as_original nion/data/test/Core_test.py::TestCore::test_fft_works_on_rgba_data nion/data/test/Core_test.py::TestCore::test_fourier_filter_gives_sensible_units_when_source_has_no_units nion/data/test/Core_test.py::TestCore::test_fourier_filter_gives_sensible_units_when_source_has_units nion/data/test/Core_test.py::TestCore::test_line_profile_uses_integer_coordinates nion/data/test/Core_test.py::TestCore::test_line_profile_width_adjusts_intensity_calibration nion/data/test/Core_test.py::TestCore::test_line_profile_width_computation_does_not_affect_source_intensity nion/data/test/Core_test.py::TestCore::test_match_template_for_1d_data nion/data/test/Core_test.py::TestCore::test_match_template_for_2d_data nion/data/test/Core_test.py::TestCore::test_mean_over_two_axes_returns_correct_calibrations nion/data/test/Core_test.py::TestCore::test_pick_grabs_datum_index_from_3d nion/data/test/Core_test.py::TestCore::test_pick_grabs_datum_index_from_4d nion/data/test/Core_test.py::TestCore::test_pick_grabs_datum_index_from_sequence_of_3d nion/data/test/Core_test.py::TestCore::test_pick_grabs_datum_index_from_sequence_of_4d nion/data/test/Core_test.py::TestCore::test_resize_works_to_make_one_dimension_larger_and_one_smaller nion/data/test/Core_test.py::TestCore::test_resize_works_to_make_one_dimension_larger_and_one_smaller_with_odd_dimensions nion/data/test/Core_test.py::TestCore::test_rgb_slice_of_sequence_works nion/data/test/Core_test.py::TestCore::test_sequence_join nion/data/test/Core_test.py::TestCore::test_sequence_split nion/data/test/Core_test.py::TestCore::test_shift_nx1_data_produces_nx1_data nion/data/test/Core_test.py::TestCore::test_slice_of_2d_works nion/data/test/Core_test.py::TestCore::test_slice_of_sequence_works nion/data/test/Core_test.py::TestCore::test_slice_sum_grabs_signal_index nion/data/test/Core_test.py::TestCore::test_slice_sum_works_on_2d_data nion/data/test/Core_test.py::TestCore::test_squeeze_removes_collection_dimension nion/data/test/Core_test.py::TestCore::test_squeeze_removes_datum_dimension nion/data/test/Core_test.py::TestCore::test_squeeze_removes_sequence_dimension nion/data/test/Core_test.py::TestCore::test_sum_over_rgb_produces_correct_data nion/data/test/Core_test.py::TestCore::test_sum_over_two_axes_returns_correct_calibrations nion/data/test/Core_test.py::TestCore::test_sum_over_two_axes_returns_correct_shape