diff --git a/MagickCore/cache.c b/MagickCore/cache.c
index b3d65ef..6da2da0 100644
--- a/MagickCore/cache.c
+++ b/MagickCore/cache.c
@@ -1221,7 +1221,7 @@
case MemoryCache:
{
if (cache_info->mapped == MagickFalse)
- cache_info->pixels=(Quantum *) RelinquishMagickMemory(
+ cache_info->pixels=(Quantum *) RelinquishAlignedMemory(
cache_info->pixels);
else
cache_info->pixels=(Quantum *) UnmapBlob(cache_info->pixels,
@@ -1331,7 +1331,7 @@
static inline void RelinquishCacheNexusPixels(NexusInfo *nexus_info)
{
if (nexus_info->mapped == MagickFalse)
- (void) RelinquishMagickMemory(nexus_info->cache);
+ (void) RelinquishAlignedMemory(nexus_info->cache);
else
(void) UnmapBlob(nexus_info->cache,(size_t) nexus_info->length);
nexus_info->cache=(Quantum *) NULL;
@@ -3675,7 +3675,7 @@
static inline void AllocatePixelCachePixels(CacheInfo *cache_info)
{
cache_info->mapped=MagickFalse;
- cache_info->pixels=(Quantum *) AcquireQuantumMemory(1,(size_t)
+ cache_info->pixels=(Quantum *) AcquireAlignedMemory(1,(size_t)
cache_info->length);
if (cache_info->pixels == (Quantum *) NULL)
{
@@ -4740,7 +4740,7 @@
if (nexus_info->length != (MagickSizeType) ((size_t) nexus_info->length))
return(MagickFalse);
nexus_info->mapped=MagickFalse;
- nexus_info->cache=(Quantum *) AcquireMagickMemory((size_t)
+ nexus_info->cache=(Quantum *) AcquireAlignedMemory(1,(size_t)
nexus_info->length);
if (nexus_info->cache == (Quantum *) NULL)
{
diff --git a/MagickCore/memory-private.h b/MagickCore/memory-private.h
index d711a20..6b56223 100644
--- a/MagickCore/memory-private.h
+++ b/MagickCore/memory-private.h
@@ -22,7 +22,11 @@
extern "C" {
#endif
-#define CACHE_LINE_SIZE (16*sizeof(void *))
+#if defined(MAGICK_TARGET_CPU) && (MAGICK_TARGET_CPU == powerpc)
+# define CACHE_LINE_SIZE (16*sizeof(void *))
+#else
+# define CACHE_LINE_SIZE (8*sizeof(void *))
+#endif
#define CacheAlign(size) ((size) < CACHE_LINE_SIZE ? CACHE_LINE_SIZE : (size))
#if defined(__cplusplus) || defined(c_plusplus)