emscripten: check if device pixel ratio has changed
diff --git a/src/video/emscripten/SDL_emscriptenevents.c b/src/video/emscripten/SDL_emscriptenevents.c
index 776bd3d..a4720e4 100644
--- a/src/video/emscripten/SDL_emscriptenevents.c
+++ b/src/video/emscripten/SDL_emscriptenevents.c
@@ -545,6 +545,10 @@
 Emscripten_HandleResize(int eventType, const EmscriptenUiEvent *uiEvent, void *userData)
 {
     SDL_WindowData *window_data = userData;
+
+    /* update pixel ratio */
+    window_data->pixel_ratio = emscripten_get_device_pixel_ratio();
+
     if(!(window_data->window->flags & FULLSCREEN_MASK))
     {
         /* this will only work if the canvas size is set through css */
diff --git a/src/video/emscripten/SDL_emscriptenvideo.c b/src/video/emscripten/SDL_emscriptenvideo.c
index 4331a91..847bb4c 100644
--- a/src/video/emscripten/SDL_emscriptenvideo.c
+++ b/src/video/emscripten/SDL_emscriptenvideo.c
@@ -209,7 +209,7 @@
 
     emscripten_get_element_css_size(NULL, &css_w, &css_h);
 
-    wdata->external_size = css_w != scaled_w || css_h != scaled_h;
+    wdata->external_size = SDL_floor(css_w) != scaled_w || SDL_floor(css_h) != scaled_h;
 
     if ((window->flags & SDL_WINDOW_RESIZABLE) && wdata->external_size) {
         /* external css has resized us */
@@ -262,6 +262,8 @@
 
     if (window->driverdata) {
         data = (SDL_WindowData *) window->driverdata;
+        /* update pixel ratio */
+        data->pixel_ratio = emscripten_get_device_pixel_ratio();
         emscripten_set_canvas_size(window->w * data->pixel_ratio, window->h * data->pixel_ratio);
 
         /*scale canvas down*/