When porting software to new platforms, a common goal is to align the code structures of the original implementation and the target platform implementation. This way, double work for designing and implementing changes can be avoided during the subsequent evolution of both implementations. In this paper, we analyze five open source porting projects with regard to challenges that hamper this alignment. We identify a number of design patterns that are used in these projects to address these challenges. We analyze these design patterns with regard to their impact on the specific challenges of porting projects. The evaluation is compiled into a guideline for determining which of the analyzed patterns appropriately aligns the original and target platform implementations for a concrete platform-dependent piece of code. We describe our experience with applying these guidelines successfully to a porting project that we conducted for an industrial partner.