diff --git a/minui/include/minui/minui.h b/minui/include/minui/minui.h
index d6881e9..0b499e6 100644
--- a/minui/include/minui/minui.h
+++ b/minui/include/minui/minui.h
@@ -40,6 +40,9 @@
   static std::unique_ptr<GRSurface> Create(int width, int height, int row_bytes, int pixel_bytes,
                                            size_t data_size);
 
+  // Clones the current GRSurface instance (i.e. an image).
+  std::unique_ptr<GRSurface> Clone() const;
+
   virtual uint8_t* data() {
     return data_;
   }
@@ -59,6 +62,7 @@
 
  private:
   uint8_t* data_{ nullptr };
+  size_t data_size_;
 
   DISALLOW_COPY_AND_ASSIGN(GRSurface);
 };
diff --git a/minui/resources.cpp b/minui/resources.cpp
index 9c9af02..9027bc6 100644
--- a/minui/resources.cpp
+++ b/minui/resources.cpp
@@ -44,13 +44,19 @@
   static constexpr size_t kSurfaceDataAlignment = 8;
   // Cannot use std::make_unique to access non-public ctor.
   auto result = std::unique_ptr<GRSurface>(new GRSurface(width, height, row_bytes, pixel_bytes));
-  size_t aligned_size =
+  result->data_size_ =
       (data_size + kSurfaceDataAlignment - 1) / kSurfaceDataAlignment * kSurfaceDataAlignment;
-  result->data_ = static_cast<uint8_t*>(aligned_alloc(kSurfaceDataAlignment, aligned_size));
+  result->data_ = static_cast<uint8_t*>(aligned_alloc(kSurfaceDataAlignment, result->data_size_));
   if (result->data_ == nullptr) return nullptr;
   return result;
 }
 
+std::unique_ptr<GRSurface> GRSurface::Clone() const {
+  auto result = GRSurface::Create(width, height, row_bytes, pixel_bytes, data_size_);
+  memcpy(result->data_, data_, data_size_);
+  return result;
+}
+
 GRSurface::~GRSurface() {
   if (data_ != nullptr) {
     free(data_);
diff --git a/tests/unit/minui_test.cpp b/tests/unit/minui_test.cpp
index b188b59..d68e5e3 100644
--- a/tests/unit/minui_test.cpp
+++ b/tests/unit/minui_test.cpp
@@ -15,8 +15,9 @@
  */
 
 #include <stdint.h>
+#include <stdlib.h>
 
-#include <memory>
+#include <vector>
 
 #include <gtest/gtest.h>
 
@@ -30,3 +31,14 @@
     ASSERT_EQ(0, reinterpret_cast<uintptr_t>(surface->data()) % kSurfaceDataAlignment);
   }
 }
+
+TEST(GRSurfaceTest, Clone) {
+  static constexpr size_t kImageSize = 10 * 50;
+  auto image = GRSurface::Create(50, 10, 50, 1, kImageSize);
+  for (auto i = 0; i < kImageSize; i++) {
+    image->data()[i] = rand() % 128;
+  }
+  auto image_copy = image->Clone();
+  ASSERT_EQ(std::vector(image->data(), image->data() + kImageSize),
+            std::vector(image_copy->data(), image_copy->data() + kImageSize));
+}
