diff --git a/ash/clipboard/clipboard_history_resource_manager.cc b/ash/clipboard/clipboard_history_resource_manager.cc
index 6e726cc9562d7..d7569f55de3a9 100644
--- a/ash/clipboard/clipboard_history_resource_manager.cc
+++ b/ash/clipboard/clipboard_history_resource_manager.cc
@@ -159,7 +159,7 @@ std::u16string ClipboardHistoryResourceManager::GetLabel(
     const ClipboardHistoryItem& item) const {
   const ui::ClipboardData& data = item.data();
   switch (ClipboardHistoryUtil::CalculateMainFormat(data).value()) {
-    case ui::ClipboardInternalFormat::kBitmap:
+    case ui::ClipboardInternalFormat::kPng:
       RecordPlaceholderString(ClipboardHistoryPlaceholderStringType::kBitmap);
       return GetLocalizedString(IDS_CLIPBOARD_MENU_IMAGE);
     case ui::ClipboardInternalFormat::kText:
diff --git a/ash/clipboard/clipboard_history_resource_manager_unittest.cc b/ash/clipboard/clipboard_history_resource_manager_unittest.cc
index cbe619f4caac5..18efb2a08730f 100644
--- a/ash/clipboard/clipboard_history_resource_manager_unittest.cc
+++ b/ash/clipboard/clipboard_history_resource_manager_unittest.cc
@@ -131,16 +131,16 @@ TEST_F(ClipboardHistoryResourceManagerTest, GetLabel) {
       .SetFilenames({ui::FileInfo(base::FilePath("/dir/filename"),
                                   base::FilePath("filename"))})
       .SetBookmarkTitle("Bookmark Title")
-      .SetBitmap(gfx::test::CreateBitmap(10, 10))
+      .SetPng(gfx::test::CreatePNGBytes(10))
       .SetFileSystemData({u"/path/to/File.txt", u"/path/to/Other%20File.txt"})
       .SetWebSmartPaste(true);
 
-  // Bitmap data always take precedence.
+  // PNG data always take precedence.
   EXPECT_EQ(resource_manager()->GetLabel(builder.Build()), u"Image");
 
-  builder.ClearBitmap();
+  builder.ClearPng();
 
-  // In the absence of bitmap data, HTML data takes precedence, but we use
+  // In the absence of PNG data, HTML data takes precedence, but we use
   // plain-text format for the label.
   EXPECT_EQ(resource_manager()->GetLabel(builder.Build()), u"Text");
 
diff --git a/ash/clipboard/clipboard_history_util.cc b/ash/clipboard/clipboard_history_util.cc
index 7659fd8aeec09..fbc9e89b4f32b 100644
--- a/ash/clipboard/clipboard_history_util.cc
+++ b/ash/clipboard/clipboard_history_util.cc
@@ -29,7 +29,7 @@ constexpr char16_t kFileSystemSourcesType[] = u"fs/sources";
 
 // The array of formats in order of decreasing priority.
 constexpr ui::ClipboardInternalFormat kPrioritizedFormats[] = {
-    ui::ClipboardInternalFormat::kBitmap,
+    ui::ClipboardInternalFormat::kPng,
     ui::ClipboardInternalFormat::kHtml,
     ui::ClipboardInternalFormat::kText,
     ui::ClipboardInternalFormat::kRtf,
@@ -53,7 +53,8 @@ absl::optional<ui::ClipboardInternalFormat> CalculateMainFormat(
 ClipboardHistoryDisplayFormat CalculateDisplayFormat(
     const ui::ClipboardData& data) {
   switch (CalculateMainFormat(data).value()) {
-    case ui::ClipboardInternalFormat::kBitmap:
+    case ui::ClipboardInternalFormat::kPng:
+      // TODO(crbug.com/1207638): Rename this to kImage or kPng.
       return ClipboardHistoryDisplayFormat::kBitmap;
     case ui::ClipboardInternalFormat::kHtml:
       if ((data.markup_data().find("<img") == std::string::npos) &&
diff --git a/ash/clipboard/clipboard_history_util_unittest.cc b/ash/clipboard/clipboard_history_util_unittest.cc
index 62246787372e6..d9f735d690de9 100644
--- a/ash/clipboard/clipboard_history_util_unittest.cc
+++ b/ash/clipboard/clipboard_history_util_unittest.cc
@@ -19,7 +19,7 @@ namespace ClipboardHistoryUtil {
 namespace {
 
 constexpr std::array<ui::ClipboardInternalFormat, 7> kAllFormats = {
-    ui::ClipboardInternalFormat::kBitmap,
+    ui::ClipboardInternalFormat::kPng,
     ui::ClipboardInternalFormat::kHtml,
     ui::ClipboardInternalFormat::kText,
     ui::ClipboardInternalFormat::kRtf,
@@ -47,7 +47,7 @@ TEST_F(ClipboardHistoryUtilTest, CalculateMainFormat) {
 
   // We will cycle through all formats in prioritized order.
   std::deque<ui::ClipboardInternalFormat> prioritized_formats = {
-      ui::ClipboardInternalFormat::kBitmap,
+      ui::ClipboardInternalFormat::kPng,
       ui::ClipboardInternalFormat::kHtml,
       ui::ClipboardInternalFormat::kText,
       ui::ClipboardInternalFormat::kRtf,
diff --git a/ash/clipboard/test_support/clipboard_history_item_builder.cc b/ash/clipboard/test_support/clipboard_history_item_builder.cc
index 3bc5e9ef49efc..782ac1227fc53 100644
--- a/ash/clipboard/test_support/clipboard_history_item_builder.cc
+++ b/ash/clipboard/test_support/clipboard_history_item_builder.cc
@@ -3,6 +3,7 @@
 // found in the LICENSE file.
 
 #include "ash/clipboard/test_support/clipboard_history_item_builder.h"
+#include <vector>
 
 #include "ash/clipboard/clipboard_history_item.h"
 #include "base/notreached.h"
@@ -12,6 +13,7 @@
 #include "ui/base/clipboard/clipboard_data.h"
 #include "ui/base/clipboard/clipboard_format_type.h"
 #include "ui/base/clipboard/custom_data_helper.h"
+#include "ui/gfx/codec/png_codec.h"
 #include "ui/gfx/image/image_unittest_util.h"
 
 namespace ash {
@@ -32,8 +34,8 @@ ClipboardHistoryItem ClipboardHistoryItemBuilder::Build() const {
     data.set_filenames(filenames_);
   if (bookmark_title_.has_value())
     data.set_bookmark_title(bookmark_title_.value());
-  if (bitmap_.has_value())
-    data.SetBitmapData(bitmap_.value());
+  if (png_.has_value())
+    data.SetPngData(png_.value());
   if (custom_format_.has_value() && custom_data_.has_value())
     data.SetCustomData(custom_format_.value(), custom_data_.value());
   if (web_smart_paste_.has_value())
@@ -46,7 +48,7 @@ ClipboardHistoryItemBuilder& ClipboardHistoryItemBuilder::Clear() {
   markup_ = absl::nullopt;
   rtf_ = absl::nullopt;
   bookmark_title_ = absl::nullopt;
-  bitmap_ = absl::nullopt;
+  png_ = absl::nullopt;
   custom_format_ = absl::nullopt;
   custom_data_ = absl::nullopt;
   web_smart_paste_ = absl::nullopt;
@@ -69,8 +71,8 @@ ClipboardHistoryItemBuilder& ClipboardHistoryItemBuilder::SetFormat(
                                         base::FilePath("filename"))});
     case ui::ClipboardInternalFormat::kBookmark:
       return SetBookmarkTitle("Bookmark Title");
-    case ui::ClipboardInternalFormat::kBitmap:
-      return SetBitmap(gfx::test::CreateBitmap(10, 10));
+    case ui::ClipboardInternalFormat::kPng:
+      return SetPng(gfx::test::CreatePNGBytes(10));
     case ui::ClipboardInternalFormat::kCustom:
       return SetCustomData("Custom Format", "Custom Data");
     case ui::ClipboardInternalFormat::kWeb:
@@ -94,8 +96,8 @@ ClipboardHistoryItemBuilder& ClipboardHistoryItemBuilder::ClearFormat(
       return ClearFilenames();
     case ui::ClipboardInternalFormat::kBookmark:
       return ClearBookmarkTitle();
-    case ui::ClipboardInternalFormat::kBitmap:
-      return ClearBitmap();
+    case ui::ClipboardInternalFormat::kPng:
+      return ClearPng();
     case ui::ClipboardInternalFormat::kCustom:
       return ClearCustomData();
     case ui::ClipboardInternalFormat::kWeb:
@@ -171,14 +173,20 @@ ClipboardHistoryItemBuilder& ClipboardHistoryItemBuilder::ClearBookmarkTitle() {
   return *this;
 }
 
-ClipboardHistoryItemBuilder& ClipboardHistoryItemBuilder::SetBitmap(
-    const SkBitmap& bitmap) {
-  bitmap_ = bitmap;
+ClipboardHistoryItemBuilder& ClipboardHistoryItemBuilder::SetPng(
+    const scoped_refptr<base::RefCountedMemory>& png) {
+  std::vector<uint8_t> data(png->data(), png->data() + png->size());
+  return SetPng(std::move(data));
+}
+
+ClipboardHistoryItemBuilder& ClipboardHistoryItemBuilder::SetPng(
+    std::vector<uint8_t> png) {
+  png_ = std::move(png);
   return *this;
 }
 
-ClipboardHistoryItemBuilder& ClipboardHistoryItemBuilder::ClearBitmap() {
-  bitmap_ = absl::nullopt;
+ClipboardHistoryItemBuilder& ClipboardHistoryItemBuilder::ClearPng() {
+  png_ = absl::nullopt;
   return *this;
 }
 
diff --git a/ash/clipboard/test_support/clipboard_history_item_builder.h b/ash/clipboard/test_support/clipboard_history_item_builder.h
index 5a9ea88e43a2f..6665efee55a19 100644
--- a/ash/clipboard/test_support/clipboard_history_item_builder.h
+++ b/ash/clipboard/test_support/clipboard_history_item_builder.h
@@ -8,8 +8,8 @@
 #include <string>
 
 #include "ash/ash_export.h"
+#include "base/memory/ref_counted_memory.h"
 #include "third_party/abseil-cpp/absl/types/optional.h"
-#include "third_party/skia/include/core/SkBitmap.h"
 #include "ui/base/clipboard/file_info.h"
 
 namespace ui {
@@ -67,9 +67,11 @@ class ASH_EXPORT ClipboardHistoryItemBuilder {
       const std::string& bookmark_title);
   ClipboardHistoryItemBuilder& ClearBookmarkTitle();
 
-  // Sets/clears `bitmap_` data.
-  ClipboardHistoryItemBuilder& SetBitmap(const SkBitmap& bitmap);
-  ClipboardHistoryItemBuilder& ClearBitmap();
+  // Sets/clears `png_` data.
+  ClipboardHistoryItemBuilder& SetPng(std::vector<uint8_t> png);
+  ClipboardHistoryItemBuilder& SetPng(
+      const scoped_refptr<base::RefCountedMemory>& png);
+  ClipboardHistoryItemBuilder& ClearPng();
 
   // Sets/clears `custom_format_` and `custom_data_` data.
   ClipboardHistoryItemBuilder& SetCustomData(const std::string& custom_format,
@@ -93,7 +95,7 @@ class ASH_EXPORT ClipboardHistoryItemBuilder {
   absl::optional<std::string> rtf_;
   std::vector<ui::FileInfo> filenames_;
   absl::optional<std::string> bookmark_title_;
-  absl::optional<SkBitmap> bitmap_;
+  absl::optional<std::vector<uint8_t>> png_;
   absl::optional<std::string> custom_format_;
   absl::optional<std::string> custom_data_;
   absl::optional<bool> web_smart_paste_;
diff --git a/ash/clipboard/views/clipboard_history_bitmap_item_view.cc b/ash/clipboard/views/clipboard_history_bitmap_item_view.cc
index df18376f598cb..31cf4f7e6baeb 100644
--- a/ash/clipboard/views/clipboard_history_bitmap_item_view.cc
+++ b/ash/clipboard/views/clipboard_history_bitmap_item_view.cc
@@ -15,9 +15,11 @@
 #include "base/time/time.h"
 #include "third_party/skia/include/core/SkBitmap.h"
 #include "ui/base/l10n/l10n_util.h"
+#include "ui/base/models/image_model.h"
 #include "ui/compositor/layer.h"
 #include "ui/compositor/layer_animation_observer.h"
 #include "ui/compositor/scoped_layer_animation_settings.h"
+#include "ui/gfx/image/image.h"
 #include "ui/gfx/image/image_skia.h"
 #include "ui/strings/grit/ui_strings.h"
 #include "ui/views/controls/image_view.h"
@@ -235,11 +237,13 @@ class ClipboardHistoryBitmapItemView::BitmapContentsView
             clipboard_history_item, container_->resource_manager_,
             base::BindRepeating(&BitmapContentsView::UpdateImageViewSize,
                                 weak_ptr_factory_.GetWeakPtr()));
-      case ui::ClipboardInternalFormat::kBitmap: {
+      case ui::ClipboardInternalFormat::kPng: {
         auto image_view = std::make_unique<views::ImageView>();
-        gfx::ImageSkia bitmap_image = gfx::ImageSkia::CreateFrom1xBitmap(
-            clipboard_history_item->data().bitmap());
-        image_view->SetImage(bitmap_image);
+        gfx::Image image = gfx::Image::CreateFrom1xPNGBytes(
+            clipboard_history_item->data().png().data(),
+            clipboard_history_item->data().png().size());
+        ui::ImageModel image_model = ui::ImageModel::FromImage(image);
+        image_view->SetImage(image_model);
         return image_view;
       }
       default:
@@ -262,7 +266,7 @@ class ClipboardHistoryBitmapItemView::BitmapContentsView
     // should meet at least one edge of the contents bounds.
     float scaling_up_ratio = 0.f;
     switch (container_->data_format_) {
-      case ui::ClipboardInternalFormat::kBitmap: {
+      case ui::ClipboardInternalFormat::kPng: {
         scaling_up_ratio = std::fmin(width_ratio, height_ratio);
         break;
       }
@@ -318,8 +322,8 @@ std::u16string ClipboardHistoryBitmapItemView::GetAccessibleName() const {
   switch (data_format_) {
     case ui::ClipboardInternalFormat::kHtml:
       return l10n_util::GetStringUTF16(IDS_CLIPBOARD_HISTORY_MENU_HTML_IMAGE);
-    case ui::ClipboardInternalFormat::kBitmap:
-      return l10n_util::GetStringUTF16(IDS_CLIPBOARD_HISTORY_MENU_BITMAP_IMAGE);
+    case ui::ClipboardInternalFormat::kPng:
+      return l10n_util::GetStringUTF16(IDS_CLIPBOARD_HISTORY_MENU_PNG_IMAGE);
     default:
       NOTREACHED();
       return std::u16string();
diff --git a/content/browser/renderer_host/clipboard_host_impl.cc b/content/browser/renderer_host/clipboard_host_impl.cc
index a65d7b5675e19..3981ffdd7c6c0 100644
--- a/content/browser/renderer_host/clipboard_host_impl.cc
+++ b/content/browser/renderer_host/clipboard_host_impl.cc
@@ -335,9 +335,8 @@ void ClipboardHostImpl::OnReadPng(ui::ClipboardBuffer clipboard_buffer,
                                   const std::vector<uint8_t>& data) {
   std::string string_data(
       reinterpret_cast<const char*>(data.data(), data.data() + data.size()));
-  // TODO(crbug.com/1201018): Create GetPngType() and use it here.
   PasteIfPolicyAllowed(
-      clipboard_buffer, ui::ClipboardFormatType::GetBitmapType(),
+      clipboard_buffer, ui::ClipboardFormatType::GetPngType(),
       std::move(string_data),
       base::BindOnce(
           [](std::vector<uint8_t> data, ReadPngCallback callback,
diff --git a/ui/base/clipboard/BUILD.gn b/ui/base/clipboard/BUILD.gn
index 86e7a85d7b7bc..42d2fb48145b0 100644
--- a/ui/base/clipboard/BUILD.gn
+++ b/ui/base/clipboard/BUILD.gn
@@ -211,6 +211,7 @@ source_set("clipboard_test_support") {
     "//build:chromecast_buildflags",
     "//build:chromeos_buildflags",
     "//ui/base:features",
+    "//ui/gfx",
   ]
 
   if (is_android) {
diff --git a/ui/base/clipboard/clipboard_data.cc b/ui/base/clipboard/clipboard_data.cc
index 0f93ad7484cc9..0bc1e93ec74e1 100644
--- a/ui/base/clipboard/clipboard_data.cc
+++ b/ui/base/clipboard/clipboard_data.cc
@@ -10,6 +10,7 @@
 #include "base/notreached.h"
 #include "skia/ext/skia_utils_base.h"
 #include "ui/base/data_transfer_policy/data_transfer_endpoint.h"
+#include "ui/gfx/codec/png_codec.h"
 #include "ui/gfx/skia_util.h"
 
 namespace ui {
@@ -22,7 +23,7 @@ ClipboardData::ClipboardData(const ClipboardData& other) {
   markup_data_ = other.markup_data_;
   url_ = other.url_;
   rtf_data_ = other.rtf_data_;
-  bitmap_ = other.bitmap();
+  png_ = other.png_;
   bookmark_title_ = other.bookmark_title_;
   bookmark_url_ = other.bookmark_url_;
   custom_data_format_ = other.custom_data_format_;
@@ -48,7 +49,7 @@ bool ClipboardData::operator==(const ClipboardData& that) const {
          custom_data_data_ == that.custom_data_data() &&
          web_smart_paste_ == that.web_smart_paste() &&
          svg_data_ == that.svg_data() && filenames_ == that.filenames() &&
-         gfx::BitmapsAreEqual(bitmap_, that.bitmap()) &&
+         png_ == that.png() &&
          (src_.get() ? (that.source() && *src_.get() == *that.source())
                      : !that.source());
 }
@@ -57,10 +58,22 @@ bool ClipboardData::operator!=(const ClipboardData& that) const {
   return !(*this == that);
 }
 
+void ClipboardData::SetPngData(std::vector<uint8_t> png) {
+  png_ = std::move(png);
+  format_ |= static_cast<int>(ClipboardInternalFormat::kPng);
+}
+
+SkBitmap ClipboardData::bitmap() const {
+  SkBitmap bitmap;
+  gfx::PNGCodec::Decode(png_.data(), png_.size(), &bitmap);
+  return bitmap;
+}
+
 void ClipboardData::SetBitmapData(const SkBitmap& bitmap) {
   DCHECK_EQ(bitmap.colorType(), kN32_SkColorType);
-  bitmap_ = bitmap;
-  format_ |= static_cast<int>(ClipboardInternalFormat::kBitmap);
+  gfx::PNGCodec::EncodeBGRASkBitmap(bitmap, /*discard_transparency=*/false,
+                                    &png_);
+  format_ |= static_cast<int>(ClipboardInternalFormat::kPng);
 }
 
 void ClipboardData::SetCustomData(const std::string& data_format,
diff --git a/ui/base/clipboard/clipboard_data.h b/ui/base/clipboard/clipboard_data.h
index 5f7fef4e97a51..3f4a550655af8 100644
--- a/ui/base/clipboard/clipboard_data.h
+++ b/ui/base/clipboard/clipboard_data.h
@@ -24,7 +24,7 @@ enum class ClipboardInternalFormat {
   kSvg = 1 << 2,
   kRtf = 1 << 3,
   kBookmark = 1 << 4,
-  kBitmap = 1 << 5,
+  kPng = 1 << 5,
   kCustom = 1 << 6,
   kWeb = 1 << 7,
   kFilenames = 1 << 8,
@@ -88,7 +88,12 @@ class COMPONENT_EXPORT(UI_BASE_CLIPBOARD) ClipboardData {
     format_ |= static_cast<int>(ClipboardInternalFormat::kBookmark);
   }
 
-  const SkBitmap& bitmap() const { return bitmap_; }
+  const std::vector<uint8_t>& png() const { return png_; }
+  void SetPngData(std::vector<uint8_t> png);
+
+  // Bitmaps are stored as encoded bytes in the `png_` member. This means we
+  // cannot return a const reference, since the bitmap is created on request.
+  SkBitmap bitmap() const;
   void SetBitmapData(const SkBitmap& bitmap);
 
   const std::string& custom_data_format() const { return custom_data_format_; }
@@ -130,8 +135,8 @@ class COMPONENT_EXPORT(UI_BASE_CLIPBOARD) ClipboardData {
   std::string bookmark_title_;
   std::string bookmark_url_;
 
-  // Bitmap images.
-  SkBitmap bitmap_;
+  // PNG image data. Bitmaps are encoded into and decoded from this member.
+  std::vector<uint8_t> png_;
 
   // Data with custom format.
   std::string custom_data_format_;
diff --git a/ui/base/clipboard/clipboard_data_unittest.cc b/ui/base/clipboard/clipboard_data_unittest.cc
index 627793fd3c1f4..35baa44f0d21f 100644
--- a/ui/base/clipboard/clipboard_data_unittest.cc
+++ b/ui/base/clipboard/clipboard_data_unittest.cc
@@ -9,13 +9,14 @@
 #include "base/strings/string_piece_forward.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "ui/base/data_transfer_policy/data_transfer_endpoint.h"
+#include "ui/gfx/skia_util.h"
 #include "url/gurl.h"
 
 namespace ui {
 
 // Tests that two ClipboardData objects won't be equal if they don't have the
 // same bitmap.
-TEST(ClipboardDataTest, BitMapTest) {
+TEST(ClipboardDataTest, BitmapTest) {
   ClipboardData data1;
   SkBitmap test_bitmap;
   test_bitmap.allocN32Pixels(3, 2);
@@ -43,4 +44,15 @@ TEST(ClipboardDataTest, DataSrcTest) {
   EXPECT_EQ(data1, data2);
 }
 
+// Tests that encoding/decoding bitmaps as PNG bytes works as intended.
+TEST(ClipboardDataTest, BitmapAsBytesTest) {
+  ClipboardData data1;
+  SkBitmap test_bitmap;
+  test_bitmap.allocN32Pixels(3, 2);
+  test_bitmap.eraseARGB(255, 0, 255, 0);
+  EXPECT_FALSE(gfx::BitmapsAreEqual(data1.bitmap(), test_bitmap));
+  data1.SetBitmapData(test_bitmap);
+  EXPECT_TRUE(gfx::BitmapsAreEqual(data1.bitmap(), test_bitmap));
+}
+
 }  // namespace ui
\ No newline at end of file
diff --git a/ui/base/clipboard/clipboard_format_type.h b/ui/base/clipboard/clipboard_format_type.h
index 210343f308418..0345196491811 100644
--- a/ui/base/clipboard/clipboard_format_type.h
+++ b/ui/base/clipboard/clipboard_format_type.h
@@ -62,6 +62,8 @@ class COMPONENT_EXPORT(UI_BASE_CLIPBOARD_TYPES) ClipboardFormatType {
   static const ClipboardFormatType& GetHtmlType();
   static const ClipboardFormatType& GetSvgType();
   static const ClipboardFormatType& GetRtfType();
+  static const ClipboardFormatType& GetPngType();
+  // TODO(crbug.com/1201018): Remove this type.
   static const ClipboardFormatType& GetBitmapType();
   static const ClipboardFormatType& GetWebCustomDataType();
 
@@ -83,9 +85,6 @@ class COMPONENT_EXPORT(UI_BASE_CLIPBOARD_TYPES) ClipboardFormatType {
   static const ClipboardFormatType& GetFilenameType();
   static const ClipboardFormatType& GetIDListType();
   static const ClipboardFormatType& GetMozUrlType();
-
-  // Specific image types that handle transparency on Windows.
-  static const ClipboardFormatType& GetPNGType();
 #endif
 
   // ClipboardFormatType can be used in a set on some platforms.
diff --git a/ui/base/clipboard/clipboard_format_type_android.cc b/ui/base/clipboard/clipboard_format_type_android.cc
index 2e1b66e0fbbd9..ded6f0c1d1a2c 100644
--- a/ui/base/clipboard/clipboard_format_type_android.cc
+++ b/ui/base/clipboard/clipboard_format_type_android.cc
@@ -90,11 +90,16 @@ const ClipboardFormatType& ClipboardFormatType::GetRtfType() {
 }
 
 // static
-const ClipboardFormatType& ClipboardFormatType::GetBitmapType() {
+const ClipboardFormatType& ClipboardFormatType::GetPngType() {
   static base::NoDestructor<ClipboardFormatType> type(kMimeTypePNG);
   return *type;
 }
 
+// static
+const ClipboardFormatType& ClipboardFormatType::GetBitmapType() {
+  return ClipboardFormatType::GetPngType();
+}
+
 // static
 const ClipboardFormatType& ClipboardFormatType::GetWebCustomDataType() {
   static base::NoDestructor<ClipboardFormatType> type(kMimeTypeWebCustomData);
diff --git a/ui/base/clipboard/clipboard_format_type_aura.cc b/ui/base/clipboard/clipboard_format_type_aura.cc
index 0e182341f4989..a47fd9ae24601 100644
--- a/ui/base/clipboard/clipboard_format_type_aura.cc
+++ b/ui/base/clipboard/clipboard_format_type_aura.cc
@@ -86,11 +86,16 @@ const ClipboardFormatType& ClipboardFormatType::GetRtfType() {
 }
 
 // static
-const ClipboardFormatType& ClipboardFormatType::GetBitmapType() {
+const ClipboardFormatType& ClipboardFormatType::GetPngType() {
   static base::NoDestructor<ClipboardFormatType> type(kMimeTypePNG);
   return *type;
 }
 
+// static
+const ClipboardFormatType& ClipboardFormatType::GetBitmapType() {
+  return ClipboardFormatType::GetPngType();
+}
+
 // static
 const ClipboardFormatType& ClipboardFormatType::GetWebKitSmartPasteType() {
   static base::NoDestructor<ClipboardFormatType> type(
diff --git a/ui/base/clipboard/clipboard_format_type_mac.mm b/ui/base/clipboard/clipboard_format_type_mac.mm
index c87c9bc4cb62c..719582aa1da4c 100644
--- a/ui/base/clipboard/clipboard_format_type_mac.mm
+++ b/ui/base/clipboard/clipboard_format_type_mac.mm
@@ -98,6 +98,12 @@ const ClipboardFormatType& ClipboardFormatType::GetRtfType() {
   return *type;
 }
 
+// static
+const ClipboardFormatType& ClipboardFormatType::GetPngType() {
+  static base::NoDestructor<ClipboardFormatType> type(NSPasteboardTypePNG);
+  return *type;
+}
+
 // static
 const ClipboardFormatType& ClipboardFormatType::GetBitmapType() {
   static base::NoDestructor<ClipboardFormatType> type(NSTIFFPboardType);
diff --git a/ui/base/clipboard/clipboard_format_type_win.cc b/ui/base/clipboard/clipboard_format_type_win.cc
index 8486fc41b5449..8834346f7aedf 100644
--- a/ui/base/clipboard/clipboard_format_type_win.cc
+++ b/ui/base/clipboard/clipboard_format_type_win.cc
@@ -211,6 +211,13 @@ const ClipboardFormatType& ClipboardFormatType::GetRtfType() {
   return *format;
 }
 
+// static
+const ClipboardFormatType& ClipboardFormatType::GetPngType() {
+  static base::NoDestructor<ClipboardFormatType> format(
+      ::RegisterClipboardFormat(L"PNG"));
+  return *format;
+}
+
 // static
 const ClipboardFormatType& ClipboardFormatType::GetBitmapType() {
   static base::NoDestructor<ClipboardFormatType> format(CF_DIBV5);
@@ -340,11 +347,4 @@ const ClipboardFormatType& ClipboardFormatType::GetWebCustomDataType() {
   return *format;
 }
 
-// static
-const ClipboardFormatType& ClipboardFormatType::GetPNGType() {
-  static base::NoDestructor<ClipboardFormatType> format(
-      ::RegisterClipboardFormat(L"PNG"));
-  return *format;
-}
-
 }  // namespace ui
diff --git a/ui/base/clipboard/clipboard_non_backed.cc b/ui/base/clipboard/clipboard_non_backed.cc
index 10a78445f78a5..3cacd71de8140 100644
--- a/ui/base/clipboard/clipboard_non_backed.cc
+++ b/ui/base/clipboard/clipboard_non_backed.cc
@@ -183,7 +183,7 @@ class ClipboardInternal {
   // Reads image from the ClipboardData.
   SkBitmap ReadImage() const {
     SkBitmap img;
-    if (!HasFormat(ClipboardInternalFormat::kBitmap))
+    if (!HasFormat(ClipboardInternalFormat::kPng))
       return img;
 
     // A shallow copy should be fine here, but just to be safe...
@@ -435,9 +435,10 @@ bool ClipboardNonBacked::IsFormatAvailable(
   if (format == ClipboardFormatType::GetRtfType())
     return clipboard_internal_->IsFormatAvailable(
         ClipboardInternalFormat::kRtf);
-  if (format == ClipboardFormatType::GetBitmapType())
+  if (format == ClipboardFormatType::GetPngType() ||
+      format == ClipboardFormatType::GetBitmapType())
     return clipboard_internal_->IsFormatAvailable(
-        ClipboardInternalFormat::kBitmap);
+        ClipboardInternalFormat::kPng);
   if (format == ClipboardFormatType::GetWebKitSmartPasteType())
     return clipboard_internal_->IsFormatAvailable(
         ClipboardInternalFormat::kWeb);
diff --git a/ui/base/clipboard/clipboard_win.cc b/ui/base/clipboard/clipboard_win.cc
index d1f10922b82e4..868de231d1021 100644
--- a/ui/base/clipboard/clipboard_win.cc
+++ b/ui/base/clipboard/clipboard_win.cc
@@ -779,7 +779,7 @@ void ClipboardWin::WriteBitmap(const SkBitmap& bitmap) {
                                         &png_encoded_bitmap)) {
     HGLOBAL png_hglobal = skia::CreateHGlobalForByteArray(png_encoded_bitmap);
     if (png_hglobal)
-      WriteToClipboard(ClipboardFormatType::GetPNGType(), png_hglobal);
+      WriteToClipboard(ClipboardFormatType::GetPngType(), png_hglobal);
   }
   HGLOBAL dibv5_hglobal = skia::CreateDIBV5ImageDataFromN32SkBitmap(bitmap);
   if (dibv5_hglobal)
diff --git a/ui/strings/ui_strings.grd b/ui/strings/ui_strings.grd
index 1613ffe6de351..32b38281c6f5c 100644
--- a/ui/strings/ui_strings.grd
+++ b/ui/strings/ui_strings.grd
@@ -1074,7 +1074,7 @@ need to be translated for each locale.-->
       </message>
 
       <!-- Clipboard history menu -->
-      <message name="IDS_CLIPBOARD_HISTORY_MENU_BITMAP_IMAGE" desc="Accessibility text for the bitmap image shown on the clipboard history menu">
+      <message name="IDS_CLIPBOARD_HISTORY_MENU_PNG_IMAGE" desc="Accessibility text for the PNG image shown on the clipboard history menu">
         Image.
       </message>
       <message name="IDS_CLIPBOARD_HISTORY_MENU_HTML_IMAGE" desc="Accessibility text for the HTML-rendered image shown on the clipboard history menu">
diff --git a/ui/strings/ui_strings_grd/IDS_CLIPBOARD_HISTORY_MENU_BITMAP_IMAGE.png.sha1 b/ui/strings/ui_strings_grd/IDS_CLIPBOARD_HISTORY_MENU_PNG_IMAGE.png.sha1
similarity index 100%
rename from ui/strings/ui_strings_grd/IDS_CLIPBOARD_HISTORY_MENU_BITMAP_IMAGE.png.sha1
rename to ui/strings/ui_strings_grd/IDS_CLIPBOARD_HISTORY_MENU_PNG_IMAGE.png.sha1