diff --git a/FCHost/fchost/fchost_handler.cc b/FCHost/fchost/fchost_handler.cc
index 367b5f8ac471c536ec587b85929e140389934e91..b3c8cd2808282618eb3a8a700324148139fb94c8 100644
--- a/FCHost/fchost/fchost_handler.cc
+++ b/FCHost/fchost/fchost_handler.cc
@@ -190,10 +190,18 @@ bool FCHostHandler::OnPreKeyEvent(CefRefPtr<CefBrowser> browser,
 {
 	CEF_REQUIRE_UI_THREAD();
 
-	if (event.type == cef_key_event_type_t::KEYEVENT_CHAR)
+	// for nonwindows platforms, we need to know the windows equivalent keycode, because CEF will convert to them for us
+	const int key_f = 0x46;
+	const int key_j = 0x4A;
+	const int key_plus = 0xBB;
+	const int key_numpad_plus = 0x6B;
+	const int key_minus = 0xBD;
+	const int key_numpad_minus = 0x6D;
+
+	if (event.type == cef_key_event_type_t::KEYEVENT_RAWKEYDOWN)
 	{
 		// CTRL+SHIFT+J - bring up the Javascript debugger
-		if ((event.modifiers == (cef_event_flags_t::EVENTFLAG_CONTROL_DOWN | cef_event_flags_t::EVENTFLAG_SHIFT_DOWN)) && event.unmodified_character == 10 /* j? maybe only on windows? whatever */)
+		if ((event.modifiers == (cef_event_flags_t::EVENTFLAG_CONTROL_DOWN | cef_event_flags_t::EVENTFLAG_SHIFT_DOWN)) && event.windows_key_code == key_j)
 		{
 			CefWindowInfo windowInfo;
 			CefBrowserSettings settings;
@@ -204,11 +212,23 @@ bool FCHostHandler::OnPreKeyEvent(CefRefPtr<CefBrowser> browser,
 			return true;
 		}
 		// CTRL+F - bring up Find In Page
-		else if (event.modifiers == cef_event_flags_t::EVENTFLAG_CONTROL_DOWN && event.unmodified_character == 6 /* f? maybe only on windows? whatever */)
+		else if (event.modifiers == cef_event_flags_t::EVENTFLAG_CONTROL_DOWN && event.windows_key_code == key_f)
 		{
 			// probably can do this at some point by ripping off code from the full-fat cefclient, but damn there's a lot of it...
 			// return true;
 		}
+		// CTRL++ - zoom in
+		else if (event.modifiers == cef_event_flags_t::EVENTFLAG_CONTROL_DOWN && (event.windows_key_code == key_plus || event.windows_key_code == key_numpad_plus))
+		{
+			double curZoom = browser->GetHost()->GetZoomLevel();
+			browser->GetHost()->SetZoomLevel(curZoom + 1.0);
+		}
+		// CTRL+- - zoom out
+		else if (event.modifiers == cef_event_flags_t::EVENTFLAG_CONTROL_DOWN && (event.windows_key_code == key_minus || event.windows_key_code == key_numpad_minus))
+		{
+			double curZoom = browser->GetHost()->GetZoomLevel();
+			browser->GetHost()->SetZoomLevel(curZoom - 1.0);
+		}
 	}
 
 	return false;