diff --git a/src/cuda/GPUField.impl.h b/src/cuda/GPUField.impl.h
index 702af9b667c439dcd2cff4e074348222844aec19..54c3b40cc808543a296d2151e03aeb6d1a5485a3 100644
--- a/src/cuda/GPUField.impl.h
+++ b/src/cuda/GPUField.impl.h
@@ -96,9 +96,9 @@ GPUField<T>::~GPUField()
 template<typename T>
 T * GPUField<T>::dataAt(cell_idx_t x, cell_idx_t y, cell_idx_t z, cell_idx_t f)
 {
-   auto offset = (x + nrOfGhostLayers_) * xStride() +
-                 (y + nrOfGhostLayers_) * yStride() +
-                 (z + nrOfGhostLayers_) * zStride() +
+   auto offset = (x + cell_idx_c(nrOfGhostLayers_)) * xStride() +
+                 (y + cell_idx_c(nrOfGhostLayers_)) * yStride() +
+                 (z + cell_idx_c(nrOfGhostLayers_)) * zStride() +
                  f * fStride();
    return static_cast<T*>(pitchedPtr_.ptr) + offset;
 }
@@ -106,9 +106,9 @@ T * GPUField<T>::dataAt(cell_idx_t x, cell_idx_t y, cell_idx_t z, cell_idx_t f)
 template<typename T>
 const T * GPUField<T>::dataAt(cell_idx_t x, cell_idx_t y, cell_idx_t z, cell_idx_t f) const
 {
-   auto offset = (x + nrOfGhostLayers_) * xStride() +
-                 (y + nrOfGhostLayers_) * yStride() +
-                 (z + nrOfGhostLayers_) * zStride() +
+   auto offset = (x + cell_idx_c(nrOfGhostLayers_)) * xStride() +
+                 (y + cell_idx_c(nrOfGhostLayers_)) * yStride() +
+                 (z + cell_idx_c(nrOfGhostLayers_)) * zStride() +
                  f * fStride();
    return static_cast<T*>(pitchedPtr_.ptr) + offset;
 }