diff --git a/arm_compute/runtime/CL/functions/CLFFTConvolutionLayer.h b/arm_compute/runtime/CL/functions/CLFFTConvolutionLayer.h
index 0fd2cf3..2fabe34 100644
--- a/arm_compute/runtime/CL/functions/CLFFTConvolutionLayer.h
+++ b/arm_compute/runtime/CL/functions/CLFFTConvolutionLayer.h
@@ -118,7 +118,7 @@
     CLPadLayer                       _pad_input_func;
     CLPadLayer                       _pad_weights_func;
     CLFFT2D                          _transform_input_func;
-    CLFFT2D                          _transform_weights_func;
+    std::unique_ptr<CLFFT2D>         _transform_weights_func;
     CLFFT2D                          _itransform_output_func;
     CLComplexPixelWiseMultiplication _prod_func;
     CLReductionOperation             _reduce_func;
diff --git a/src/runtime/CL/functions/CLFFT2D.cpp b/src/runtime/CL/functions/CLFFT2D.cpp
index 4300fb4..165e784 100644
--- a/src/runtime/CL/functions/CLFFT2D.cpp
+++ b/src/runtime/CL/functions/CLFFT2D.cpp
@@ -85,11 +85,9 @@
 
 void CLFFT2D::run()
 {
-    _memory_group.acquire();
+    MemoryGroupResourceScope scope_mg(_memory_group);
 
     _first_pass_func.run();
     _second_pass_func.run();
-
-    _memory_group.release();
 }
 } // namespace arm_compute
diff --git a/src/runtime/CL/functions/CLFFTConvolutionLayer.cpp b/src/runtime/CL/functions/CLFFTConvolutionLayer.cpp
index 441c1c7..6a89b9d 100644
--- a/src/runtime/CL/functions/CLFFTConvolutionLayer.cpp
+++ b/src/runtime/CL/functions/CLFFTConvolutionLayer.cpp
@@ -63,7 +63,7 @@
       _pad_input_func(),
       _pad_weights_func(),
       _transform_input_func(memory_manager),
-      _transform_weights_func(memory_manager),
+      _transform_weights_func(),
       _itransform_output_func(memory_manager),
       _prod_func(),
       _reduce_func(),
@@ -149,7 +149,8 @@
     _pad_weights_func.configure(&_flipped_weights, &_padded_weights, padding_w);
 
     // Transform weights
-    _transform_weights_func.configure(&_padded_weights, &_transformed_weights, FFT2DInfo());
+    _transform_weights_func = support::cpp14::make_unique<CLFFT2D>();
+    _transform_weights_func->configure(&_padded_weights, &_transformed_weights, FFT2DInfo());
 
     // Pad input
     const PaddingList padding_in = { { 0, kernel_size.x() + pad_valid.x() - 1 }, { 0, kernel_size.y() + pad_valid.y() - 1 } };
@@ -294,7 +295,7 @@
 {
     prepare();
 
-    _memory_group.acquire();
+    MemoryGroupResourceScope scope_mg(_memory_group);
 
     // Transform input
     if(_needs_permute)
@@ -327,8 +328,6 @@
     {
         _activation_layer_func.run();
     }
-
-    _memory_group.release();
 }
 
 void CLFFTConvolutionLayer::prepare()
@@ -367,11 +366,13 @@
         CLScheduler::get().queue().finish();
         _flipped_weights.allocator()->free();
 
-        // Transform weights to frequence domain
+        // Transform weights to frequency domain
         _transformed_weights.allocator()->allocate();
-        _transform_weights_func.run();
+        _transform_weights_func->run();
         _padded_weights.mark_as_unused();
         CLScheduler::get().queue().finish();
+        // Delete object and release internal memory
+        _transform_weights_func.reset();
         _padded_weights.allocator()->free();
 
         _is_prepared = true;
