diff --git a/CHANGELOG.md b/CHANGELOG.md
index a2b6a7c7a..6e6c6031a 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -6,8 +6,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
## [v0.8.1] - Unreleased
### Fixed
-- Crash where Pixelorama could not load a cached sub-resource - [Issue #339](https://github.com/Orama-Interactive/Pixelorama/issues/339)
+- Fixed crash where Pixelorama could not load a cached sub-resource - [Issue #339](https://github.com/Orama-Interactive/Pixelorama/issues/339)
- When moving tabs, the projects now move along with their respective tabs.
+- Fixed crash where the animation was playing in the mini canvas preview and then the user switched to a project with less frames.
## [v0.8] - 2020-09-23
diff --git a/src/UI/Canvas/CanvasPreview.gd b/src/UI/Canvas/CanvasPreview.gd
index 193037346..8eb5b358c 100644
--- a/src/UI/Canvas/CanvasPreview.gd
+++ b/src/UI/Canvas/CanvasPreview.gd
@@ -6,6 +6,9 @@ onready var animation_timer : Timer = $AnimationTimer
func _draw() -> void:
var current_project : Project = Global.current_project
+ if frame >= current_project.frames.size():
+ frame = current_project.current_frame
+
$AnimationTimer.wait_time = Global.animation_timer.wait_time
if animation_timer.is_stopped():
diff --git a/src/UI/Canvas/CanvasPreview.tscn b/src/UI/Canvas/CanvasPreview.tscn
index f9b249b69..7d057882c 100644
--- a/src/UI/Canvas/CanvasPreview.tscn
+++ b/src/UI/Canvas/CanvasPreview.tscn
@@ -1,39 +1,9 @@
[gd_scene load_steps=2 format=2]
-[sub_resource type="GDScript" id=1]
-script/source = "extends Node2D
-
-
-var frame : int = 0
-onready var animation_timer : Timer = $AnimationTimer
-
-func _draw() -> void:
- var current_project : Project = Global.current_project
- $AnimationTimer.wait_time = Global.animation_timer.wait_time
-
- if animation_timer.is_stopped():
- frame = current_project.current_frame
- var current_cels : Array = current_project.frames[frame].cels
-
- # Draw current frame layers
- for i in range(current_cels.size()):
- var modulate_color := Color(1, 1, 1, current_cels[i].opacity)
- if i < current_project.layers.size() and current_project.layers[i].visible:
- draw_texture(current_cels[i].image_texture, Vector2.ZERO, modulate_color)
-
-
-func _on_AnimationTimer_timeout() -> void:
- var current_project : Project = Global.current_project
-
- if frame < current_project.frames.size() - 1:
- frame += 1
- else:
- frame = 0
- update()
-"
+[ext_resource path="res://src/UI/Canvas/CanvasPreview.gd" type="Script" id=1]
[node name="CanvasPreview" type="Node2D"]
-script = SubResource( 1 )
+script = ExtResource( 1 )
[node name="AnimationTimer" type="Timer" parent="."]
[connection signal="timeout" from="AnimationTimer" to="." method="_on_AnimationTimer_timeout"]