diff --git a/FCHost/fchost/fchost_handler.cc b/FCHost/fchost/fchost_handler.cc
index 90289beccac84c5e13e9db0ac6ec1de843a1c585..51fa309b5d216b3fcc786a462524d628ce31b92e 100644
--- a/FCHost/fchost/fchost_handler.cc
+++ b/FCHost/fchost/fchost_handler.cc
@@ -242,6 +242,35 @@ bool FCHostHandler::OnPreKeyEvent(CefRefPtr<CefBrowser> browser,
 }
 
 
+void FCHostHandler::OnBeforeContextMenu(CefRefPtr<CefBrowser> browser,
+	CefRefPtr<CefFrame> frame,
+	CefRefPtr<CefContextMenuParams> params,
+	CefRefPtr<CefMenuModel> model)
+{
+	CEF_REQUIRE_UI_THREAD();
+
+	if (params->HasImageContents() && params->GetSourceUrl() != "")
+		model->AddItem(MENU_ID_USER_FIRST, "Save Image...");
+}
+
+bool FCHostHandler::OnContextMenuCommand(CefRefPtr<CefBrowser> browser,
+	CefRefPtr<CefFrame> frame,
+	CefRefPtr<CefContextMenuParams> params,
+	int command_id,
+	EventFlags event_flags)
+{
+	CEF_REQUIRE_UI_THREAD();
+
+	switch (command_id) {
+	case MENU_ID_USER_FIRST:
+		browser->GetHost()->StartDownload(params->GetSourceUrl());
+		return true;
+	default:
+		return false;
+	}
+}
+
+
 void FCHostHandler::CloseAllBrowsers(bool force_close) {
   if (!CefCurrentlyOn(TID_UI)) {
     // Execute on the UI thread.
diff --git a/FCHost/fchost/fchost_handler.h b/FCHost/fchost/fchost_handler.h
index 7465da991763851ede97fd1bd7a078ea267d7a67..0b9577556f096f7e3472adb719302d521561f2de 100644
--- a/FCHost/fchost/fchost_handler.h
+++ b/FCHost/fchost/fchost_handler.h
@@ -14,6 +14,7 @@ class FCHostHandler : public CefClient,
                       public CefLoadHandler,
 					  public CefDownloadHandler,
 					  public CefKeyboardHandler,
+					  public CefContextMenuHandler,
             private CefDialogHandler {
  public:
   explicit FCHostHandler(bool use_views);
@@ -32,6 +33,7 @@ class FCHostHandler : public CefClient,
   virtual CefRefPtr<CefLoadHandler> GetLoadHandler() override { return this; }
   virtual CefRefPtr<CefDownloadHandler> GetDownloadHandler() override { return this; }
   virtual CefRefPtr<CefKeyboardHandler> GetKeyboardHandler() override { return this; }
+  virtual CefRefPtr<CefContextMenuHandler> GetContextMenuHandler() override { return this; }
 
   CefRefPtr< CefDialogHandler > GetDialogHandler() override { return this; }
   bool OnFileDialog(CefRefPtr<CefBrowser> browser, CefDialogHandler::FileDialogMode mode,
@@ -74,6 +76,17 @@ class FCHostHandler : public CefClient,
 							CefEventHandle os_event,
 							bool* is_keyboard_shortcut) override;
 
+  // CefContextMenuHandler methods:
+  virtual void OnBeforeContextMenu(CefRefPtr<CefBrowser> browser,
+	  CefRefPtr<CefFrame> frame,
+	  CefRefPtr<CefContextMenuParams> params,
+	  CefRefPtr<CefMenuModel> model) override;
+  virtual bool OnContextMenuCommand(CefRefPtr<CefBrowser> browser,
+	  CefRefPtr<CefFrame> frame,
+	  CefRefPtr<CefContextMenuParams> params,
+	  int command_id,
+	  EventFlags event_flags) override;
+
   // Request that all existing browser windows close.
   void CloseAllBrowsers(bool force_close);