diff --git a/nifty/field.py b/nifty/field.py
index 5b9355f439ccf716337d1eb625ca69e6c373e8ae..961ec7fa2f68ca6588f69e381317fa4eb737974d 100644
--- a/nifty/field.py
+++ b/nifty/field.py
@@ -672,8 +672,11 @@ class Field(Loggable, Versionable, object):
         # Do this for every 'pindex-slice' in parallel using the 'slice(None)'s
         local_pindex = pindex.get_local_data(copy=False)
 
-        local_blow_up = [slice(None)]*len(self.shape)
-        local_blow_up[self.domain_axes[power_space_index][0]] = local_pindex
+        local_blow_up = [slice(None)]*len(spec.shape)
+        # it is important to count from behind, since spec potentially grows
+        # with every iteration
+        index = self.domain_axes[power_space_index][0]-len(self.shape)
+        local_blow_up[index] = local_pindex
         # here, the power_spectrum is distributed into the new shape
         local_rescaler = spec[local_blow_up]
         return local_rescaler
diff --git a/test/test_field.py b/test/test_field.py
index 6daaf99df0eb13c750ac1dca9ec7fd603920369b..98249ec2e6c439ff07e4dc315ea23f925979dcd8 100644
--- a/test/test_field.py
+++ b/test/test_field.py
@@ -20,12 +20,15 @@ import unittest
 
 import numpy as np
 from numpy.testing import assert_,\
-                          assert_almost_equal
+                          assert_almost_equal,\
+                          assert_allclose
 
 from itertools import product
 
 from nifty import Field,\
-                  RGSpace
+                  RGSpace,\
+                  LMSpace,\
+                  PowerSpace
 
 from d2o import distributed_data_object
 
@@ -80,3 +83,39 @@ class Test_Functionality(unittest.TestCase):
         assert_almost_equal(a1.get_full_data(), a2.get_full_data())
         assert_almost_equal(h1.get_full_data(), h3.get_full_data())
         assert_almost_equal(a1.get_full_data(), a3.get_full_data())
+
+    @expand(product([RGSpace((8,), harmonic=True,
+                             zerocenter=False),
+                     RGSpace((8, 8), harmonic=True, distances=0.123,
+                             zerocenter=True)],
+                    [RGSpace((8,), harmonic=True,
+                             zerocenter=False),
+                     LMSpace(12)]))
+    def test_power_synthesize_analyze(self, space1, space2):
+        p1 = PowerSpace(space1)
+        spec1 = lambda k: 42/(1+k)**2
+        fp1 = Field(p1, val=spec1)
+
+        p2 = PowerSpace(space2)
+        spec2 = lambda k: 42/(1+k)**3
+        fp2 = Field(p2, val=spec2)
+
+        outer = np.outer(fp1.val.get_full_data(), fp2.val.get_full_data())
+        fp = Field((p1, p2), val=outer)
+
+        samples = 1000
+        ps1 = 0.
+        ps2 = 0.
+        for ii in xrange(samples):
+            sk = fp.power_synthesize(spaces=(0, 1), real_signal=True)
+
+            sp = sk.power_analyze(spaces=(0, 1), keep_phase_information=False)
+            ps1 += sp.sum(spaces=1)/fp2.sum()
+            ps2 += sp.sum(spaces=0)/fp1.sum()
+
+        assert_allclose(ps1.val.get_full_data()/samples,
+                        fp1.val.get_full_data(),
+                        rtol=0.1)
+        assert_allclose(ps2.val.get_full_data()/samples,
+                        fp2.val.get_full_data(),
+                        rtol=0.1)